解決:後臺傳值給 ajax 的中文都變成問號?

        Java 後臺,用的框架是 Spring + SpringMVC + MyBatishtml

        個人緣由是,要用 ajax 處理一個 POST 請求,而後傳回來的中文就變成了「???」java

        看 Reponse Header 中的 charset 也都是 UTF-8,沒問題啊,哪裏有問題,而後我開始回憶,是用了@ResponseBody這個註解返回值才都變成亂碼的,由於沒有這個註解前直接 return 按照SpringMVC 映射機制是跳轉頁面,出現了 404 錯誤,可是返回值仍是中文的。ajax

        百度得知,這個註解是返回json數據格式的值,默認編碼是「ISO-8859-1」,因此,你就算用Java代碼設置 response 的編碼也是沒有用的。json

// 設置了這段代碼,仍是沒有用
response.setCharacterEncoding("UTF-8");

        因而我在網上找到了另外一個解決方法,就是定義 @RequestMapping 註解中的 produces 屬性,這個屬性規定了返回值的類型和返回值的編碼(可選),可是咱們要的就是返回值的編碼,如下是解決代碼:app

@RequestMapping(value = "/reg.htm", method = RequestMethod.POST, produces = "text/html; charset=UTF-8")
@ResponseBody
public String reg(HttpServletRequest request){

}

    "text/html" 是 contentType,request 的 contentType 和 response 的 contentType 有一些小差異,有興趣的能夠本身瞭解一下。框架

相關文章
相關標籤/搜索