1. 程式人生 > >如何理解字符集和字元編碼

如何理解字符集和字元編碼

  • 概念
簡單來說,unicode,gb碼和大五碼就是編碼的值,而utf-8,uft-16之類就是這個值的表現形式.而前面那三種編碼是不相容的,同一個漢字,那三個碼值是完全不一樣的.如"漢"的uncode值與gbk就是不一樣的,假設unicode為a040,gbk為b030,而uft-8碼,就是把那個值表現的形式.utf-8碼完全只針對uncode來組織的,如果GBK要轉UTF-8必須先轉unicode碼,再轉utf-8就OK了。
  • GBK到Utf-8的轉換過程

GBK等都屬於GB碼值的表現形式
Utf-8等都屬於Unicode碼值的表現形式
所以如果GBK要轉變成utf-8,則首先先將GBK對應的GB碼值轉換成Unicode碼值(這可以通過相關演算法和查表來完成),然後將Unicode碼值用utf-8編碼方式將其編碼(最終在記憶體中的表現方式)。


  • Java一切基於unicode編碼
Java原始碼,我們可以指定各種各樣的編碼格式,這些編碼格式,最終表現的只是這個檔案中對字元的編碼,可以直接通過十六進位制檢視檔案頭來檢視到是何種編碼。當對原始碼進行編譯的時候,編譯成.class檔案,這個時候這個檔案就是採用Unicode編碼集,當呼叫String中的getBytes()方法時,就是對特定字串(這個字串是Unicode編碼集的字元組成的集合)進行編碼,new String()則可以按照某個字符集將位元組流轉換回unicode編碼集的字元集合。