SpringMvc后臺(tái)接收json數(shù)據(jù)中文亂碼問(wèn)題詳解
原因分析
使用ajax從前臺(tái)頁(yè)面?zhèn)鬏敂?shù)據(jù)到后臺(tái)controller控制器的時(shí)候,出現(xiàn)中文亂碼
其實(shí)亂碼問(wèn)題出現(xiàn)的原因,就是由于默認(rèn)的tomcat配置,接收請(qǐng)求是以ISO-8859-1來(lái)轉(zhuǎn)碼,導(dǎo)致中文出現(xiàn)了亂碼問(wèn)題,只要能正確的以u(píng)tf-8來(lái)轉(zhuǎn)碼,則可以解決亂碼問(wèn)題。
普通數(shù)據(jù)傳輸,從jsp頁(yè)面?zhèn)鞯胶笈_(tái)controller,中文亂碼問(wèn)題解決方案
首先檢查jsp頁(yè)面編碼格式是否是utf-8
設(shè)置中文過(guò)濾
<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">
<!-- 啟動(dòng)Spring MVC的注解功能,完成請(qǐng)求和注解POJO的映射 注解請(qǐng)求映射
默認(rèn)是ISO-88859-1,避免亂碼這里設(shè)置為UTF-8 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8" />
</bean>
<!-- 啟動(dòng)JSON格式的配置,自動(dòng)將格式轉(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í),對(duì)參數(shù)進(jìn)行轉(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亂碼問(wèn)題
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" />
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作(實(shí)例代碼詳解)
這篇文章主要介紹了java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Spring boot項(xiàng)目集成Camel FTP的方法示例
這篇文章主要介紹了Spring boot項(xiàng)目集成Camel FTP的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
關(guān)于弱引用WeakReference所引用的對(duì)象的回收規(guī)則
這篇文章主要介紹了關(guān)于弱引用WeakReference所引用的對(duì)象的回收規(guī)則,如果一個(gè)弱引用實(shí)例的成員變量referent引用了一個(gè)對(duì)象obj,那么就稱這個(gè)弱引用實(shí)例對(duì)obj的引用是弱引用,被一個(gè)弱引用實(shí)例引用的對(duì)象,稱為弱引用對(duì)象,需要的朋友可以參考下2023-09-09
Java后臺(tái)通過(guò)Collections獲取list集合中最大數(shù),最小數(shù)代碼
這篇文章主要介紹了Java后臺(tái)通過(guò)Collections獲取list集合中最大數(shù),最小數(shù)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
IDEA神器一鍵查看Java字節(jié)碼及其他類信息插件
這篇文章主要為大家介紹了一款I(lǐng)DEA神器,可以一鍵查看Java字節(jié)碼及其他類信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01
Android Studio更改項(xiàng)目使用的JDK(詳細(xì)步驟)
本文介紹了如何在Android Studio中修改Gradle和JDK的配置步驟,包括打開(kāi)設(shè)置、進(jìn)入Gradle設(shè)置、修改JDK路徑、保存并生效等,感興趣的朋友跟隨小編一起看看吧2024-11-11

