編碼和字符集 亂碼的根源和常見的處理方式

2021-08-31 12:58:15 字數 661 閱讀 9071

總的來說,編碼和字符集,就像方言和字典。

常用的unicode字符集,就是乙個大字典。

字串作為乙個string的時候,一般都是用程式碼頁示,沒有亂碼問題。

當string向外傳輸的時候,需要轉換成byte,使用不同的編碼方式,結果的byte陣列是不同的。拿到byte的人,需要還原為string,如果不知道其編碼,就可能出現亂碼問題。所以,byte轉string時,是亂碼出現的關鍵,此時必須知道byte的編碼。

有兩個常用的處理方式:資料頭部裡指定編碼、轉換成編碼無關的格式(一般使用不會亂碼的ascii字符集的乙個子集)。

對於前一種方式: http中,我們通過request/response頭部,明確的制定body中二進位制內容的編碼。utf-8的文字檔案中的bom頭。xml檔案更嚴格,要求xml頭和檔案本身編碼一致。

對於後一種方式:比如urlencode,按unicode字符集內碼的編號(整數),再轉成16進製制,再每兩位加%,htmlencode除了escape的字元外,也是%u內碼。base64取了64個可顯示的ascii字元做底。

字元亂碼之字符集和字元編碼

最近經常會碰到上傳客戶提供的歷史資料上傳時csv檔案用excel開啟時會有亂碼問題,雖然知道知道是字元編碼不一致導致的,但其中諸多細節卻知之甚少,今日特來理理。1.為什麼會有字元亂碼問題?如何解決字元亂碼問題 計算機中儲存的資訊都是二進位制數表示的,但是世界上有各種不同的語言文字,所以我們需要一些規...

字符集和編碼

什麼是字元?字元就是文字和符號的統稱,字符集就是多個字元的集合,字符集有很多種,常見的有ascii,gb2312,unicode字符集。什麼是編碼?計算機要準確的處理字符集中的文字,就需要對字元進行編碼。對unicode字符集編碼的叫做unicode編碼,對ascii字符集編碼叫做ascii編碼。a...

編碼和字符集

ascii unicode gb2312等都是字符集,用於定義編號指代的字元。utf 8,utf 16則是unicode的編碼格式。ascii ascii只有128個,能表示英文 數字 常用符號。gb2312 gb2312是中文特有的字符集,有2萬多個字元,前128個和ascii保持一致,因此能相容...