springmvc 明明到處都配置了編碼爲UTF-8,可還是亂碼!!!

在項目開發中亂碼是一個常見的問題,網上也有豐富的解決方案。這裏不詳細說明。只說我遇到的問題和解決方式。

曾遇到一個問題,就是靜態頁面+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
查看源碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章