http接口返回亂碼

這幾天對接接口出現一個問題,嬿這個中文亂碼。瀏覽器

 

小編自己由於這件事浪費了很多時間,因此天然是帶有一點情緒,但描述中並無誇大,也但願各位無論是對接或者是被對接的人可以互相體諒,不要老是踢皮球工具

 

事情是這樣的。網站

 

接口調用出現了問題,由於中文「嬿」會亂碼。編碼

 

接口方一句話:那要看大家往接口傳的是什麼spa

 

小編本着心虛的態度趕忙看一下本身的代碼(其實心中早已無語,因全部的中文都是按照文檔指定的方式傳的,且咱們系統中文字根本沒有出現亂碼的現象)blog

結果一看,對方接口文檔裏面的gb2312編碼的碼錶裏面根本沒這個字。接口

好吧,截圖給對方看。utf-8

 

接口方:給你個網站,你先看上面能不能解碼。文檔

 

小編再次被套路,點進去網站,哎,還真能夠解碼。神奇了,難道是我學藝不精???,並且這個網站上面還真的寫着gb2312編解碼(後來事實證實,這個網站實際用的是gbk解碼!!!!)cli

此時同事恰好提到gbk能夠兼容gb2312的事,小編腦殼一抽,想說那就試試看吧!

結果還真行,此時才發現,真的是套路滿滿。此時對接口方已經是鄙夷滿滿。

 

接口方:那你就用gbk吧

 

小編好意給的文檔裏面要改一下的建議徹底被無視

這還沒完,由於這只是傳數據的時候編碼錯誤,還有返回數據時候的數據也不對!!

 

你們請注意,jdk中的httpclient的核心工具包中對於返回數據內容的解碼,並不能強制指定編碼,而是優先以返回的字符集編碼進行解碼,沒有的時候纔是以咱們指定的編碼進行解碼

因此其實接口方根本不須要在文檔中告知返回的數據用什麼編碼,由於這都是在協議頭中返回的,就是那個charset=utf-8

而若是接口方硬是傳回一個錯誤的編碼,將會致使咱們解碼失敗,一堆亂碼。

 

這裏小編再次受到接口方的暴擊:客戶端均可以設置編碼的啊!

 

大哥、大叔、大爺!我知道瀏覽器即便選擇了gb2312編碼,仍然能夠自動兼容到gbk,可是那是客戶端,咱們是服務端,咱們只認協議

最終無奈妥協,在本身代碼中作了,若是返回gb2312編碼的時候,改用gbk,由於gbk兼容gb2312的

 

相關文章
相關標籤/搜索