對(duì)于SpringMVC mysql數(shù)據(jù)庫而言,解決中文亂碼,可以從3個(gè)方向考慮。
1. 通過修改mysql服務(wù)器端的配置文件/etc/mysql/my.cnf來支持中文
比如:
[mysql]
default-character-set=utf8
2. 在客戶端或者JDBC連接時(shí)定制支持中文的編碼格式
(通常使用UTF-8)
這樣插入數(shù)據(jù)的時(shí)候,讓mysql為自動(dòng)為我們轉(zhuǎn)碼,如果是通過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獲得中文參數(shù)后亂碼解決
jsp頁面中文輸入,到controller亂碼,這時(shí)候需要修改設(shè)置的是在web.xml文件中添加一個(gè)編碼的過濾器(filter)將編碼統(tǒng)一為UTF-8,如下
(注意,需要設(shè)置forceEncoding參數(shù)值為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頁面編碼設(shè)置為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"/>