SpringMvc后臺接收json數(shù)據(jù)中文亂碼問題詳解
原因分析
使用ajax從前臺頁面?zhèn)鬏敂?shù)據(jù)到后臺controller控制器的時候,出現(xiàn)中文亂碼
其實亂碼問題出現(xiàn)的原因,就是由于默認的tomcat配置,接收請求是以ISO-8859-1來轉(zhuǎn)碼,導(dǎo)致中文出現(xiàn)了亂碼問題,只要能正確的以utf-8來轉(zhuǎn)碼,則可以解決亂碼問題。
普通數(shù)據(jù)傳輸,從jsp頁面?zhèn)鞯胶笈_controller,中文亂碼問題解決方案
首先檢查jsp頁面編碼格式是否是utf-8
設(shè)置中文過濾
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
springMvc配置文件中設(shè)置JSON數(shù)據(jù)轉(zhuǎn)換
<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <!-- 啟動Spring MVC的注解功能,完成請求和注解POJO的映射 注解請求映射 默認是ISO-88859-1,避免亂碼這里設(shè)置為UTF-8 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/html;charset=UTF-8" /> </bean> <!-- 啟動JSON格式的配置,自動將格式轉(zhuǎn)換成JSON格式,不需要其他類 --> <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json;charset=UTF-8" /> </bean> </mvc:message-converters> </mvc:annotation-driven>
解決方案
方式一:
在controller接收參數(shù)時,對參數(shù)進行轉(zhuǎn)碼
@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" />
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java Person,Student,GoodStudent 三個類的繼承、構(gòu)造函數(shù)的執(zhí)行
這篇文章主要介紹了java Person,Student,GoodStudent 三個類的繼承、構(gòu)造函數(shù)的執(zhí)行,需要的朋友可以參考下2017-02-02全面匯總SpringBoot和SpringClould常用注解
Java注解是附加在代碼中的一些元信息,用于一些工具在編譯、運行時進行解析和使用,起到說明、配置的功能,這篇文章就帶你來了解一下2021-08-08Java統(tǒng)計一個字符串在另外一個字符串出現(xiàn)次數(shù)的方法
這篇文章主要介紹了Java統(tǒng)計一個字符串在另外一個字符串出現(xiàn)次數(shù)的方法,涉及java字符串遍歷、正則匹配等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03BeanUtils.copyProperties復(fù)制屬性失敗的原因及解決方案
這篇文章主要介紹了BeanUtils.copyProperties復(fù)制屬性失敗的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08