您好,登錄后才能下訂單哦!
最近在做項目的時候,與服務器交互傳輸信息時,出現中文亂碼問題。由于一開始對編碼這個東西不是很了解,都是一知半解狀態,平時所謂的程序中的轉碼也都是基于僥幸的過去了,沒遇到什么問題。可這次卻沒這么幸運了,中文亂碼。。。。,好了,廢話不多說了,直入主題。
如何才能正確解碼?首先要清楚的知道源數據是以什么樣的編碼方式encode過來的,然后再以對應的編碼方式decode才能正確解碼,否則就會變成亂碼!
舉例說吧:
以Tomcat作服務器,默認的環境編碼是ios-8859-1,客戶端編碼方式為UTF-8(通常很多人都喜歡把編碼方式設置成UTF-8吧,呵呵)。當客戶端Get/Post數據時,參數值中包含中文時,這里要注意了,GET/POST是有區別的:
GET時,Tomcat會以默認的環境編碼iso-8859-1方式進行一番解碼,這樣就會導致中文的地方變成亂碼了,要想解決這個問題,可以逆編碼一下,new String("亂碼字符串".getBytes("iso-8859-1"), "UTF-8"),就能正常顯示了。
POST時,就不會先以Tomcat的默認編碼時行解碼,而是以你設置的過濾器中的編碼方式來解碼了(比如你設置的是UTF-8)。
當然還有其它更多的方式和方法,比如你可以在GET方式請求時,進行兩次URLEncode.encode("中文", "UTF-8");,這樣Tomcat服務端只要進行一次URLDecode.decode("參數值", "UTF-8");就可以了。原因是:第一次URLEncode是對中文轉換成%、字母和數字,第二次URLEncode是對%、字母和數字進行編碼,因此在Tomcat服務端默認使用iso-8859-1進行解碼后的結果是%、字母和數字,再URLDecode.decode就可以正常顯示中文。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。