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
查看源码
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章