java - spring responsebody 返回中文乱码
迷茫
迷茫 2017-04-18 10:06:55
0
6
682
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(6)
洪涛

還得看你的web容器是什麼編碼啊... 踩著踩著也就過去了.

迷茫

對spring-mvc對編碼適配器做編碼支持,沒記錯是標籤名為:

的貨

PHPzhong
  1. spring mvc 加 Jackson 支援

  2. 添加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");
伊谢尔伦

用其他的抓包工具測試你的回傳結果是否是utf-8的中文。
問題往往出現在源頭或最後一步。
如果是在頁面亂碼上你的JSP頁面沒有設定 charset "UTF-8"。
瀏覽器console裡面亂碼的話,用F12 網路 看看回應頭Content-Type = text/html,Encoding之類的。
這些環節沒有問題,那大概就是String 環境設定的問題,前面回答很值得參考。

大家讲道理

工程用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這個 刪掉,不要用springmvc預設的初始化配置

Ty80

加沒加CharacterEncodingFilter?沒加的話加上試試看
如果不行:
用的哪個版本的spirng,哪個版本的tomcat?
以及:
哪有樓上這些說的這麼複雜。 。 。一片一片的xml看著就煩。 。 。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!