在項目開發中亂碼是一個常見的問題,網上也有豐富的解決方案。這裏不詳細說明。只說我遇到的問題和解決方式。
曾遇到一個問題,就是靜態頁面+ajax請求,發現靜態頁面上的中文亂碼了,但是ajax請求的那部分中文卻不會亂碼。明確靜態頁面有
<meta charset="UTF-8">
後,斷定這個問題不是數據庫問題,不是前端問題。那還是依然是服務端問題,在確認tomcat等服務器有指定編碼後,最終還是把問題定位到了springmvc上。通過對以下類打斷點調試
org.springframework.web.filter.CharacterEncodingFilter
將原來的代碼:<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>
<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>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
其中forceResponseEncoding是強制將服務器返回的編碼改爲UTF-8
有興趣可以進入
org.springframework.web.filter.CharacterEncodingFilter
查看源碼