spring mvc 的 @ResponseBody 返回中文亂碼


控制台日志提示  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")
這樣既可以設置響應頭類型,也可以設置該響應頭編碼
缺點: 每個請求映射都需要配置,一般對於特殊需求這樣做,很多項目中我們整體采用的都是同種格式,所以不如在配置文件中去全局設置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM