解決SpringMvc后臺接收json數(shù)據(jù)中文亂碼問題的幾種方法
1、使用ajax從前臺頁面?zhèn)鬏敂?shù)據(jù)到后臺controller控制器的時候,出現(xiàn)中文亂碼(問號???)。
之前在網(wǎng)上找了各種解決方案,都行不通,最后發(fā)現(xiàn)是tomcat服務(wù)器接收數(shù)據(jù)的問題
解決方案:
方式一:在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" />
原因分析:
其實亂碼問題出現(xiàn)的原因,就是由于默認的tomcat配置,接收請求是以ISO-8859-1來轉(zhuǎn)碼,導(dǎo)致中文出現(xiàn)了亂碼問題,只要能正確的以utf-8來轉(zhuǎn)碼,則可以解決亂碼問題。
2、普通數(shù)據(jù)傳輸,從jsp頁面?zhèn)鞯胶笈_controller,中文亂碼問題解決方案
(1)、首先檢查jsp頁面編碼格式是否是utf-8
(2)、設(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>
(3)、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>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
logback整合rabbitmq實現(xiàn)消息記錄日志的配置
這篇文章主要介紹了logback整合rabbitmq實現(xiàn)消息記錄日志的配置,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-12-12springcloud集成nacos?使用lb?無效問題解決方案
這篇文章主要介紹了解決springcloud集成nacos?使用lb?無效,通過查看spring-cloud-starter-gateway?jar中的自動配置類的源碼,得知,該jar包中是不支持負載均衡的,需要引入spring-cloud-starter-loadbalancer?來支持,需要的朋友可以參考下2023-04-04Java實現(xiàn)學(xué)生成績管理系統(tǒng)
這篇文章主要為大家詳細介紹了Java實現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-04-04Spring動態(tài)監(jiān)聽Nacos配置中心key值變更的實現(xiàn)方法
Nacos本身提供支持監(jiān)聽配置變更的操作,但在使用起來,個人感覺不是很友好,無法精確到某個key的變更監(jiān)聽,所以本文小編給大家介紹了Spring動態(tài)監(jiān)聽Nacos配置中心key值變更的實現(xiàn)方法,需要的朋友可以參考下2024-08-08淺談Storm在zookeeper上的目錄結(jié)構(gòu)
這篇文章主要介紹了淺談Storm在zookeeper上的目錄結(jié)構(gòu)的相關(guān)內(nèi)容,涉及storm使用zookeeper的操作以及詳細結(jié)構(gòu)圖,具有一定參考價值,需要的朋友可以了解下。2017-10-10Spring Boot監(jiān)聽Redis Key失效事件實現(xiàn)定時任務(wù)的示例
這篇文章主要介紹了Spring Boot監(jiān)聽Redis Key失效事件實現(xiàn)定時任務(wù)的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04SpringBoot使用JavaMailSender實現(xiàn)發(fā)送郵件+Excel附件
項目審批完畢后,需要發(fā)送郵件通知相關(guān)人員,并且要附帶數(shù)據(jù)庫表生成的Excel表格,這就要求不光是郵件發(fā)送功能,還要臨時生成Excel表格做為附件,本文詳細介紹了SpringBoot如何使用JavaMailSender實現(xiàn)發(fā)送郵件+Excel附件,需要的朋友可以參考下2023-10-10解決Java變異出現(xiàn)錯誤No enclosing instance of type XXX is accessible
這牌你文章主要給大家分享解決Java變異出現(xiàn)錯誤,具體的饑餓絕方案請看下面文章的內(nèi)容,需要的朋友可以參考一下,希望能幫助到你2021-09-09