对于SpringMVC mysql数据库而言,解决中文乱码,可以从3个方向考虑。
1. 通过修改mysql服务器端的配置文件/etc/mysql/my.cnf来支持中文
比如:
[mysql]
default-character-set=utf8
2. 在客户端或者JDBC连接时定制支持中文的编码格式
(通常使用UTF-8)
这样插入数据的时候,让mysql为自动为我们转码,如果是通过DriverManager.getConnection(url)编码方式操作JDBC,可以在JDBC的url中追加useUnicode=true&characterEncoding=UTF-8解决乱码问题。
jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8
3. 表单提交controller获得中文参数后乱码解决
jsp页面中文输入,到controller乱码,这时候需要修改设置的是在web.xml文件中添加一个编码的过滤器(filter)将编码统一为UTF-8,如下
(注意,需要设置forceEncoding参数值为true)
<filter>
<filter-name>characterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意: jsp页面编码设置为UTF-8
form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果
4. Spring MVC RequestParam的中文乱码
配置一下tomcat 的server.xml 文件。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding = "UTF-8"/>