问题症状:将中文数据登录到MySQL数据库后,通过数据库客户端检索发现刚刚登录的中文数据全是“?”乱码,但通过数据库客户端登录的数据却没有问题。并且数据库中原有中文数据从数据库中检索出来也没有问题。

问题原因:这遇到的是字符集编码转换问题。问题的根本原因就是用户从浏览器或者客户端输入、数据库和数据库服务器的字符集不同,编码转化不成功所造成的。

解决方案:本方案以字符集UTF-8为例。

1.首先确保JSP页面的字符集为UTF-8,即在JSP页面代码顶端引入<@page pageEncoding=”UTF-8” contentType=”text/html; charset=UTF-8”>

2.确保从浏览器或客户端到服务器之间传输的编码为UTF-8。本例以struts2为例在web.xml中加入过滤器

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>

org.springframework.web.filter.CharacterEncodingFilter

</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

3.确保数据库服务器字符集为UTF-8。在服务器MYSQL的安装目录下,找到my.ini文件,在该文件中找到default-character-set=,该属性如果不是utf8则需改为utf8,文件中一共有两处。(MYSQL在安装的是字符集选项默认的是latin1,所以要根据项目需要选择字符集)。

4.确保数据库及数据库表的字符集为UTF-8。在建立数据库或表时,可通过客户端工具选择字符集utf8(建立数据库或表也可修改)。

以上四步操作完成后,确保了数据传输过程中各环节字符集编码的统一,以后再进行登录、检索、更新的时候乱码的问题基本就得到解决啦。:)
评论
发表评论

您还没有登录,请登录后发表评论