天天看點

Spring @ResponseBody 傳回中文亂碼問題

今天在使用spring 的時候,發現中文傳回的是亂碼。

經過研究發現,主要是@responsebody 引起的。主要是由于 @responsebody 傳回字元串結果的時候,使用了org.springframework.http.converter.stringhttpmessageconverter 中預設的編碼。

請看 org.springframework.http.converter.stringhttpmessageconverter :

public class stringhttpmessageconverter extends abstracthttpmessageconverter<string> {  

    public static final charset default_charset = charset.forname("iso-8859-1");  

    private final list<charset> availablecharsets;  

    private boolean writeacceptcharset = true;  

    public stringhttpmessageconverter() {  

        super(new mediatype("text", "plain", default_charset), mediatype.all);  

        this.availablecharsets = new arraylist<charset>(charset.availablecharsets().values());  

    }  

預設情況下,是iso-8859-1編碼,我們要将iso-8859-1編碼改成utf-8編碼。

public static final charset default_charset = charset.forname("iso-8859-1");    

我們的解決方法是,在spring-servlet.xml中,加入一個bean

<bean  

    class="org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter">  

    <property name="messageconverters">  

        <list>  

            <bean  

                class="org.springframework.http.converter.stringhttpmessageconverter">  

                <property name="supportedmediatypes">  

                    <list>  

                        <bean class="org.springframework.http.mediatype">  

                            <constructor-arg index="0" value="text" />  

                            <constructor-arg index="1" value="plain" />  

                            <constructor-arg index="2" value="utf-8" />  

                        </bean>  

                    </list>  

                </property>  

            </bean>  

        </list>  

    </property>  

</bean>  

特别說明:尊重作者的勞動成果,轉載請注明出處哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt102