首頁  >  問答  >  主體

java - spring responsebody 返回中文乱码

迷茫迷茫2720 天前689

全部回覆(6)我來回復

  • PHP中文网

    PHP中文网2017-04-18 10:08:55

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

    回覆
    0
  • 迷茫

    迷茫2017-04-18 10:08:55

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

    的貨

    回覆
    0
  • PHPz

    PHPz2017-04-18 10:08:55

    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");

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:08:55

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:08:55

    工程用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預設的初始化配置

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:08:55

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

    回覆
    0
  • 取消回覆