最近在使用select2的时候在spring-mvc中使用ajax请求获取下拉列表,竟然出现了乱码,使用了多种以前处理乱码的办法,前台后台依次测试,最终找到了方法
- 首先在前台找原因,发现字符集并没有问题 两处都已经规定为utf-8
<%@page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- 然后查看了web.xml 也使用了过滤器设定字符集
<filter> <filter-name>characterEncodingFilter</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>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- 查看tomcat配置文件 server.xml 也增加了字符集设定
URIEncoding="UTF-8"
- 最终发现是@ResponseBody的问题 在@RequestMapping中加入如下属性就可以了
method=RequestMethod.POST, produces = "application/json; charset=utf-8"