控制台日志提示 Written [返回消息] as "text/plain" using [org.springframework.http.converter.StringHttpMessageConverter@48088cc9]
我spring-mvc配置文件里配置如下:
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
中文依舊亂碼,我發生的原因是這里 只設置了 application/json 數據格式為 UTF-8, 使用 @ResponseBody 在我使用的spring版本中(4.3.20),它返回字符串的響應頭為 "text/plain", 而不管什么響應頭 默認編碼都是 ISO-8859-1 ,也就是我需要為 text/plain 響應頭配置編碼:
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
那么問題來了,我應該在哪里配置 @ResponseBody 默認的響應頭為什么類型的,目前沒找到,如果不是通過配置文件就方便了, 在 @RequestMapping 注解設置如下:
@RequestMapping(value = "/add",produces="text/html;charset=UTF-8")
這樣既可以設置響應頭類型,也可以設置該響應頭編碼
缺點: 每個請求映射都需要配置,一般對於特殊需求這樣做,很多項目中我們整體采用的都是同種格式,所以不如在配置文件中去全局設置