2008-06-24
Struts2,MYSQL 乱码问题解决方案
问题症状:将中文数据登录到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(建立数据库或表也可修改)。
以上四步操作完成后,确保了数据传输过程中各环节字符集编码的统一,以后再进行登录、检索、更新的时候乱码的问题基本就得到解决啦。:)
问题原因:这遇到的是字符集编码转换问题。问题的根本原因就是用户从浏览器或者客户端输入、数据库和数据库服务器的字符集不同,编码转化不成功所造成的。
解决方案:本方案以字符集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(建立数据库或表也可修改)。
以上四步操作完成后,确保了数据传输过程中各环节字符集编码的统一,以后再进行登录、检索、更新的时候乱码的问题基本就得到解决啦。:)


评论