项目中使用Springmvc controller返回json结果,发现中文为“?”,尝试各种解决办法,都未实际解决,最后在controller的requestmapping中添加参数设置解决。同时总结全面的页面字符乱码设置问题供参考解决。
1)设置web.xml
<!-- 配置字符編碼 -->
<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>
2)设置页面编码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
重点说明,如果在jsp页面引入其他页面,例如HTML,也需要在HTML最上面加入
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
3)设置controller
如果页面没有乱码,通过controller返回的结果为乱码,可在requestmapping中设置一个参数如下:
produces="text/html;charset=UTF-8"
请求格式参考:
当然还有其他可能的编码格式问题,例如数据库默认编码和页面编码需要统一;设计的数据库编码也得和页面编码一致: