场景
小编在springMVC框架中使用@ResponseBody注解从controller层想ajax返回String类型的参数的时候,发现中文乱码,这确实个尴尬的问题,于是小编跟踪了一下spring的源码,看了看string类型的转换问题,在这个方法中我们可以看到,spring中解析字符串的转换器默认的编码竟然是ISO-8859-1,这就是问题所在了:
既然找到问题了,我们就给出下面两种方法来解决
下面两个方法是在spring4.2.5版本上测试的,如果使用的版本有较大的差异的话,可能会有所差异
方法一:使用(produces = "application/json; charset=utf-8"):
@RequestMapping(value="/getUsersByPage",produces = "application/json; charset=utf-8") // @RequestMapping("/getUsersByPage") @ResponseBody public String getUsersByPage(String page,String rows,String text,HttpServletRequest request,HttpServletResponse response){
方法二、在springmvc.xml文件中添加
<!-- 处理请求返回json字符串的中文乱码问题 --> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
上面两种方法已经测试过,可以解决问题,当然还会有其余的解决方法,比如我们可以使用filter来解决,都是比较好的方法,小编在这记录和分享一下,希望可以对读者有所帮助!