解決SpringMvc後臺接收json數據中文亂碼問題

困擾了好久終於解決了,特意分享出來^_^

1、使用ajax從前臺頁面傳輸數據到後臺controller控制器的時候,出現中文亂碼(問號???)。

之前在網上找了各種解決方案,都行不通,最後發現是tomcat服務器接收數據的問題

解決方案:

方式一:在controller接收參數時,對參數進行轉碼,紅色部分

複製代碼br/>@ResponseBody
@RequestMapping(value="/getJsonDataByCityName",produces="application/json")
public String getJsonByName(HttpServletRequest request,HttpServletResponse response,@RequestParam String city_name)throws ServletException, IOException
{
//response.setContentType("text/html;charset=UTF-8");

//request.setCharacterEncoding("UTF-8");//解決post亂碼問題
System.out.println(request.getCharacterEncoding());
city_name = new String(city_name.getBytes("ISO-8859-1"), "UTF-8");
System.out.println("city_name:"+city_name);
}
複製代碼
方式二:

配置tomcat目錄下的service.xml文件

tomcat7/conf/server.xml

給該行代碼加上 URIEncoding="UTF-8" 的編碼屬性

<Connector port="8080" protocol="HTTP/1.1"

           connectionTimeout="20000"

           redirectPort="8443" URIEncoding="UTF-8" />

原因分析:

其實亂碼問題出現的原因,就是由於默認的tomcat配置,接收請求是以ISO-8859-1來轉碼,導致中文出現了亂碼問題,只要能正確的以utf-8來轉碼,則可以解決亂碼問題。

2、普通數據傳輸,從jsp頁面傳到後臺controller,中文亂碼問題解決方案

(1)、首先檢查jsp頁面編碼格式是否是utf-8

(2)、設置中文過濾

複製代碼

characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true characterEncodingFilter /* 複製代碼 (3)、springMvc配置文件中設置JSON數據轉換 複製代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章