1. 程式人生 > >@ResponseBody 返回亂碼 的解決辦法

@ResponseBody 返回亂碼 的解決辦法

自己 set tex 屬性 頭信息 success esp iso convert

1:最快的 最簡單的辦法是 在Ajax請求臉面指定頭信息Accept屬性,StringHttpMessageConverter默認iso-8859-1編碼,但是會根據請求頭信息指定的編碼格式來轉換,所以只需要在ajax請求的時候指定頭信息Accept屬性就可以了。

$.ajax({  
        url: subUrl,
        type: ‘POST‘,
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
        headers: {Accept : 
"text/plain; charset=utf-8"}, success: function (rs){ alert(rs); }, error: function (rs){ alert(rs); } });

2:spring MVC有一系列HttpMessageConverter去處理用@ResponseBody註解的返回值,如返回list則使用MappingJacksonHttpMessageConverter,返回string,則使用StringHttpMessageConverter,這個convert使用的是字符集是iso-8859-1,而且是final的。

public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); 

自己重寫一個StringHttpMessageConverter,使用你想要的字符集,並且使這個屬性可註入。

3:不使用String直接返回對象就不會亂碼了

@ResponseBody 返回亂碼 的解決辦法