@ResponseBody 返回亂碼 的解決辦法
阿新 • • 發佈:2017-11-25
自己 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 返回亂碼 的解決辦法