在项目开发中乱码是一个常见的问题,网上也有丰富的解决方案。这里不详细说明。只说我遇到的问题和解决方式。
曾遇到一个问题,就是静态页面+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
查看源码