SpringMVC默认处理的字符集是ISO-8859-1。
接口定义为 @ResponseBody
,使用的返回值处理器为 RequestResponseBodyMethodProcessor
,使用HttpMessageConverter
消息转换机制,会调用对应的 HttMessageConverter
处理类。支持 String
类型的消息转换器有 StringHttpMessageConverter, MappingJackson2HttpMessageConverter
。系统默认支持的媒体列表有:
取得媒体列表后,会选取其中的一个:
从图中可以看出 String
返回值类型取得的媒体类型为 text/plain;charset=ISO-8859-1
,且使用 StringHttpMessageConverter
消息转换类。将该媒体类型设置为 response
的 contentType
, 因此返回中文乱码:
可修改字符编码,如 springmvc.xml 文件加上如下配置:
<mvc:annotation-driven >
<!-- 消息转换器 -->
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value="text/plain;charset=UTF-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>