在項目中經常會遇到往數據庫更新數據或者從數據庫取數據時出現中文亂碼問題,這種情況下需要確定亂碼到底是在應用程序中產生的還是數據庫中產生的
a.應用程序中亂碼
1.在web.xml中設置過濾器,將從客戶端的請求信息轉換爲utf-8;杜絕從源頭出現的中文亂碼;
<!-- filter(過濾字符編碼,以防中文亂碼等問題) -->
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- 指定對哪些文件進行攔截 -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<!-- 對所有請求進行攔截 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
2.在web容器中配置信息,例如在tomcat中:
在server.xml中找到相關節點,設置以下信息:
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
3.將項目文件編碼和IDE工具編碼的默認設置爲utf-8;
b.數據庫中亂碼
1.更改數據庫配置中的字符集爲utf-8(兼容中文,韓文,日文等);
2.在應用中與數據庫連接時記得顯性的指定字符集爲utf-8;
例如:在項目中的數據庫配置文件(xx.properties)中設置
jdbc.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8;