如何解决Spring MVC中响应乱码问题
作者:小小小沐风~
这篇文章主要介绍了如何解决Spring MVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Spring MVC最新响应中乱码解决方式
以前的解决办法
<!--启用包扫描--> <context:component-scan base-package="com.mufeng"/> <!--放行静态文件--> <mvc:default-servlet-handler/> <!--开启SpringMVC注解开发并解决乱码问题--> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <!--通过对StringHttpMessageConverter类的List做添加,修改响应的编码--> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
这是比较通用的一种方法
但是它有一种缺点,就是你响应一种数据添加一种,比较麻烦。而且在之前的版本中默认的响应类型为text/html;charset=ISO-8859-1
,且其被final关键字修饰,无法进行修改。
但是在5.2.19.RELEASE之后的版本中,通过阅读源码可知:
StringHttpMessageConverter
的父类AbstractHttpMessageConverter<T>
中有了这样一行代码:
public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConverter<T> { ..... @Nullable private Charset defaultCharset; .....
虽然它默认的编码集还是ISO-8859-1
,但是它已不再被final修饰,这就意味着我们可以在Spring配置文件中直接对其进行注入,修改Spring http响应的默认编码集。
代码如下:
<!--解决乱码问题--> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="defaultCharset"> <value>UTF-8</value> </property> </bean> </mvc:message-converters>
这种方法更简洁高效,而且通过此方法我们不需要在前端代码中处理响应时担心后端穿过来的编码集错误。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。