java調(diào)用接口返回亂碼問題及解決
java調(diào)用接口返回亂碼
調(diào)用第三方接口
當(dāng)調(diào)用第三方接口時,存入數(shù)據(jù)庫中的數(shù)據(jù)正常,打印的數(shù)據(jù)亂碼,在header中加入charset=UTF-8即可。
此處用到了hutool的依賴:
<!-- hutool工具類 --> <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)用咱們的接口時,可能會出現(xiàn)返回信息中文亂碼的情況,我們在自己的方法的注解上加produces = "application/json;charset=utf-8"即可
如下所示:
@RequestMapping(value = "/haimian",produces = "application/json;charset=utf-8")
這兩種方式就是解決調(diào)用接口返回信息亂碼的方法。
java接口返回信息中有小部分漢字亂碼,問題原因及解決
問題原因
接口返回的信息長度過大,用指定長度的字節(jié)數(shù)組接收流中的數(shù)據(jù),當(dāng)超過字節(jié)數(shù)組大小時會分隔讀取,如果此時正好分隔到漢字時,就會產(chǎn)生亂碼。
如下示例代碼:當(dāng)接口返回的信息字節(jié)大小超過4096,漢字就可能產(chǎn)生亂碼。
解決方案
1、用字符數(shù)組替換字節(jié)數(shù)組;
2、擴大字節(jié)數(shù)組的大小,保證流中的漢字不會被分隔。
示例代碼用方案1:用字符數(shù)組替換字節(jié)數(shù)組。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot2.x實現(xiàn)oauth2授權(quán)碼登陸的方法
這篇文章主要介紹了springboot2.x實現(xiàn)oauth2授權(quán)碼登陸的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08解析web.xml中在Servlet中獲取context-param和init-param內(nèi)的參數(shù)
本篇文章是對web.xml中在Servlet中獲取context-param和init-param內(nèi)的參數(shù)進行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07Lombok中@EqualsAndHashCode注解的使用及說明
這篇文章主要介紹了Lombok中@EqualsAndHashCode注解的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件
這篇文章主要介紹了Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09