java調(diào)用接口返回亂碼問(wèn)題及解決
java調(diào)用接口返回亂碼
調(diào)用第三方接口
當(dāng)調(diào)用第三方接口時(shí),存入數(shù)據(jù)庫(kù)中的數(shù)據(jù)正常,打印的數(shù)據(jù)亂碼,在header中加入charset=UTF-8即可。
此處用到了hutool的依賴(lài):
<!-- hutool工具類(lèi) --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version> </dependency>
示例代碼:
String result = HttpRequest.post("http://blog.csdn.net") .header("Content-Type","application/json;charset=UTF-8") .body(JSON.toJSONString(map)) .execute().body();
第三方調(diào)用接口
當(dāng)?shù)谌秸{(diào)用咱們的接口時(shí),可能會(huì)出現(xiàn)返回信息中文亂碼的情況,我們?cè)谧约旱姆椒ǖ淖⒔馍霞觩roduces = "application/json;charset=utf-8"即可
如下所示:
@RequestMapping(value = "/haimian",produces = "application/json;charset=utf-8")
這兩種方式就是解決調(diào)用接口返回信息亂碼的方法。
java接口返回信息中有小部分漢字亂碼,問(wèn)題原因及解決
問(wèn)題原因
接口返回的信息長(zhǎng)度過(guò)大,用指定長(zhǎng)度的字節(jié)數(shù)組接收流中的數(shù)據(jù),當(dāng)超過(guò)字節(jié)數(shù)組大小時(shí)會(huì)分隔讀取,如果此時(shí)正好分隔到漢字時(shí),就會(huì)產(chǎn)生亂碼。
如下示例代碼:當(dāng)接口返回的信息字節(jié)大小超過(guò)4096,漢字就可能產(chǎn)生亂碼。
解決方案
1、用字符數(shù)組替換字節(jié)數(shù)組;
2、擴(kuò)大字節(jié)數(shù)組的大小,保證流中的漢字不會(huì)被分隔。
示例代碼用方案1:用字符數(shù)組替換字節(jié)數(shù)組。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot2.x實(shí)現(xiàn)oauth2授權(quán)碼登陸的方法
這篇文章主要介紹了springboot2.x實(shí)現(xiàn)oauth2授權(quán)碼登陸的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08解析web.xml中在Servlet中獲取context-param和init-param內(nèi)的參數(shù)
本篇文章是對(duì)web.xml中在Servlet中獲取context-param和init-param內(nèi)的參數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07Lombok中@EqualsAndHashCode注解的使用及說(shuō)明
這篇文章主要介紹了Lombok中@EqualsAndHashCode注解的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件
這篇文章主要介紹了Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09IDEA中JetBrains Mono字體的正確安裝姿勢(shì)
在 JetBrains Mono 的設(shè)計(jì)階段,它就充分考慮到了長(zhǎng)時(shí)間工作可能導(dǎo)致的眼睛疲勞問(wèn)題,比如字母的大小和形狀、空間量、自然等寬平衡、不必要的細(xì)節(jié)、連字、以及難以區(qū)分的符號(hào)等,從而最終設(shè)計(jì)出了這么一款字體2021-06-06