Heim > Fragen und Antworten > Hauptteil
PHPz2017-04-18 10:08:55
spring mvc 添加 Jackson 支持
添加spring mvc 配置
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg name="defaultCharset" value="UTF-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
或者 重写 StringHttpMessageConverter
/* 将 */ public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
/* 改 */ public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
伊谢尔伦2017-04-18 10:08:55
用其他的抓包工具测试你的返回结果是否是utf-8的中文。
问题往往出现在源头或者最后一步。
如果是在页面乱码上你的JSP页面没有设置 charset "UTF-8"。
浏览器console里面乱码的话,用F12 网络 看看响应头Content-Type = text/html,Encoding之类的。
这些环节没有问题,那大概就是String 环境设置的问题,前面回答很值得参考。
大家讲道理2017-04-18 10:08:55
工程中用springmvc返回json格式时,中文乱码了,看了一下springmvc源码发现 StringHttpMessageConverter 这个类的默认编码为ISO-8859-1(悲剧,springmvc这么大的东西怎么不用utf-8,搞不懂)
下面是解决方法,
springmvc 的配置文件:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<property name="messageConverters">
<list>
<bean class = "org.springframework.http.converter.StringHttpMessageConverter">
<property name = "supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=utf-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
</list>
</property>
</bean>
使用这个配置要把springmvc这个<mvc:annotation-driven /> 删掉,不要用springmvc默认的初始化配置
PHP中文网2017-04-18 10:08:55
加没加CharacterEncodingFilter?没加的话加上试试看
如果不行:
用的哪个版本的spirng,哪个版本的tomcat?
以及:
哪有楼上这些说的这么复杂。。。一片一片的xml看着就烦。。。