今天在使用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