在项目环境配置过程中发现过滤器已经设置了utf-8拦截处理,但是还是乱码。最后百度发现是因@ResponseBody时涉及到org.springframework.http.converter.StringHttpMessageConverter这个类,该类在默认实现中将defaultCharset设为ISO-8859-1。这个时候需要对这个消息转换器重新赋值。解决方法如下,在springmvx的配置文件中添加如下配置
<mvc:annotation-driven> <!-- 消息转换器 --> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/> </bean> </mvc:message-converters> </mvc:annotation-driven>