近日,笔者拷贝了一个框架到本机,部署过程中遇到了MySql乱码问题。
1、导入sql语句后,进入系统有中文乱码,此时首先要查看导入的sql文件是否已经是乱码,笔者将sql文件用txt打开后确实是乱码,数据库已经是乱码,在界面中看到的当然也是乱码,用其他文本工具(UltraEdit等)以非乱码打开后,再导入sql,确保数据库中不是乱码,在页面中查看应该页不是乱码了。
2、前台页面存入数据库是乱码时,这时要查看mysql的默认设置
Show global variables like ‘char%’;
|character_set_client|utf8
|character_set_connection|utf8
|character_set_database|utf8
|character_set_filesystem|binary
|character_set_results|utf8
|character_set_server|utf8
|character_set_system|utf8
如果不是如上设置,可以通过两种方式修改
(1) 命令 set global character_set_client=utf8;
(2) 修改mysql跟目录下的my.ini文件中的default-character-set=uft8,注意文件中有两处需要设置。修改完,重启,再通过命令查看默认设置是否如上所示。
3、数据库默认设置没问题时,查看所用schema以及schema下数据表的设置是否是uft8。
4、应用服务端也应该通过过滤器来设置页面的默认编码为uft-8,如下图所示。
<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>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>、
5、jsp文件中设置pageEncoding=”UTF-8”
通过如上几个步骤的检查设置,mysql乱码问题应该可以得到解决,如遇其他问题望大家共享讨论。