Json傳輸出現(xiàn)中文亂碼問題的解決辦法
針對最近練習(xí)項(xiàng)目時(shí)出現(xiàn)的亂碼問題 -- tomcat編碼出現(xiàn)的問題
問題出現(xiàn)原因:
web.xml中已經(jīng)加了中文過濾器和json數(shù)據(jù)轉(zhuǎn)換器,但依舊出現(xiàn)亂碼,這是因?yàn)閠omcat默認(rèn)的編碼格式是 iso-8859-1,所以會出現(xiàn)亂碼.
解決方式1: 將編碼方式直接改為UTF-8
/** * 分頁條件查詢 */ public void selectByPagesAndCondition(HttpServletRequest req,HttpServletResponse resp) throws IOException{ //獲取數(shù)據(jù)當(dāng)前頁碼與展示條數(shù) url?currentPage=1&pageSize=5 int currentPage = Integer.parseInt(req.getParameter("currentPage")); int pageSize = Integer.parseInt(req.getParameter("pageSize")); //接收brand數(shù)據(jù) BufferedReader reader = req.getReader(); String s = reader.readLine(); s = new String(s.getBytes("ISO-8859-1"),"UTF-8"); System.out.println(s); Brand brand = JSONObject.parseObject(s, Brand.class); PageBean<Brand> pageBean = brandService.selectByPagesAndCondition(currentPage, pageSize,brand); String StrJSON = JSON.toJSONString(pageBean); //返回?cái)?shù)據(jù)的JSON格式 resp.setContentType("text/json;charset=utf-8"); resp.getWriter().write(StrJSON); }
解決方式2:因是maven加的tomcat插件原因,修改其編碼格式
<build> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8080</port> <path>/</path> <uriEncoding>utf-8</uriEncoding> <!--指定編碼格式 --> </configuration> </plugin> </plugins> </build>
在沒有用springmvc時(shí),可添加該句解決post請求的亂碼問題:
request.setCharacterEncoding("UTF-8");
一般的響應(yīng)亂碼
a:設(shè)置response的字符流的編碼方式為UTF-8;如:
response.setCharacterEncoding(“UTF-8”);b:設(shè)置瀏覽器解碼是用UTF-8的碼表來解碼;如:
response.setHeader(“content-type”, “text/html;charset=UTF-8”);
可兩者配合使用
以注解形式解決json串?dāng)?shù)據(jù)格式響應(yīng)亂碼問題
@RequestMapping(produces = {"text/html;charset=utf-8"})
若原來方法只寫了匹配路徑,默認(rèn)可不寫value屬性 如: @requestMapping(“/login.do”)等
多屬性時(shí)要添加屬性名,改為
@requestMapping(value="/login.do",produces = {"text/html;charset=utf-8"})
缺點(diǎn): 每個(gè)方法都要添加這個(gè)produces屬性,所以直接在springmvc.xml添加2個(gè)轉(zhuǎn)換器更為方便.
總結(jié)
到此這篇關(guān)于Json傳輸出現(xiàn)中文亂碼問題的解決辦法的文章就介紹到這了,更多相關(guān)Json傳輸中文亂碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用java實(shí)現(xiàn)“釘釘微應(yīng)用免登進(jìn)入某H5系統(tǒng)首頁“功能”
這篇文章主要介紹了用java實(shí)現(xiàn)“釘釘微應(yīng)用,免登進(jìn)入某H5系統(tǒng)首頁“功能”,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10詳解SpringBoot基礎(chǔ)之banner玩法解析
SpringBoot項(xiàng)目啟動(dòng)時(shí)會在控制臺打印一個(gè)默認(rèn)的啟動(dòng)圖案,這個(gè)圖案就是我們要講的banner,這篇文章主要介紹了SpringBoot基礎(chǔ)之banner玩法解析,感興趣的小伙伴們可以參考一下2019-04-04Java實(shí)現(xiàn)BASE64編碼和解碼的方法
本篇文章主要介紹了Java實(shí)現(xiàn)BASE64編碼和解碼的方法,BASE64編碼通常用于轉(zhuǎn)換二進(jìn)制數(shù)據(jù)為文本數(shù)據(jù),有需要的可以了解一下。2016-11-11SpringBoot+Netty+WebSocket實(shí)現(xiàn)消息發(fā)送的示例代碼
這篇文章主要介紹了SpringBoot+Netty+WebSocket實(shí)現(xiàn)消息發(fā)送的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Elasticsearch倒排索引詳解及實(shí)際應(yīng)用中的優(yōu)化
Elasticsearch(ES)使用倒排索引來加速文本的搜索速度,倒排索引之所以高效,主要是因?yàn)樗淖兞藬?shù)據(jù)的組織方式,使得查詢操作可以快速完成,這篇文章主要給大家介紹了關(guān)于Elasticsearch倒排索引詳解及實(shí)際應(yīng)用中優(yōu)化的相關(guān)資料,需要的朋友可以參考下2024-08-08Java并發(fā)編程學(xué)習(xí)之Unsafe類與LockSupport類源碼詳析
這篇文章主要給大家介紹了關(guān)于Java并發(fā)編程學(xué)習(xí)之Unsafe類與LockSupport類源碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-06-06詳解Java高并發(fā)編程之AtomicReference
此篇文章主要介紹了AtomicReference的出現(xiàn)背景,AtomicReference的使用場景,以及介紹了AtomicReference的源碼,重點(diǎn)方法的源碼分析2021-06-06