SSM框架响应出现中文乱码解决方案
问题描述: 使用SSM框架测试代码时,偶然间发现响应中文出现乱码,但是我项目中使用UTF-8的编码格式,并且在web.xml 中也采用了utf-8的编码过滤,依然出现响应中文乱码问题感到费解。如图所示:
运行后中文乱码:
问题出现原因:
1.虽然已经在web.xml 中也采用了utf-8的编码过滤,而控制台显示“text/plain”显然是有问题的。
2.通过查阅资料发现在其对应org.springframework.http.converter.StringHttpMessageConverter方法中使用的是默认字符集是ISO-8859-1编码,如图
因此导致响应中文时出现乱码问题。
解决方案:
需要将StringHttpMessageConverter的编码方式改为UTF-8。
方式一:在@RequestMapping里面加入produces = “text/html;charset=UTF-8” 。采用这种方式如果每个@RequestMapping里面都添加一个显然是不太友好的,那么推荐使用方式二。
方式二:直接将org.springframework.http.converter.StringHttpMessageConverter 里面的属性defaultCharset设置成utf-8。
如下设置在spring-mvc.xml 中
<!--自定义消息转换器的编码,解决后台传输json回前台时,中文乱码问题 -->
<bean id="stringHttpMessageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
<mvc:annotation-driven>
<mvc:message-converters>
<ref bean="stringHttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven>
再次测试:问题解决。