字符集編碼---1 基本概念

    「給定一個字符,對應各類字符集編碼後的二進制形式究竟是什麼樣子?」,對於這個問題,我本身也不甚清楚。並且平常工做中,每次遇到這個問題都是靠一款叫作 CodeView 的工具解決。因此接下來不涉及具體的編碼過程,只對基本概念、各平臺下的字符集轉換作介紹。html

    本文爲第一部分,對經常使用字符集編碼作概念性介紹。如下是查閱維基百科和牛人博客後,我本身的一種理解,並不必定十分準確。首先,要來理解兩個概念:工具

 

    字符集:編碼

         字符與二進制碼一一對應的集合。spa

 

    字符編碼:code

         存儲和解析字符集中的二進制碼。而不一樣字符集收錄的字符數目不一樣,規模不一樣,因此不一樣字符集的編碼規則是不一樣的,但同一字符集的編碼規則是相同的。因此不少時候,字符集定下來,其編碼規則也就定下來。orm

    

    接下來就介紹幾種經常使用的字符集(編碼)htm

    EBCDIC(Extended Binary Coded Decimal Interchange Code):blog

    擴增二進式十進交換碼,IBM指定的一個字符編碼表,在AS/400等系統上使用,平時幾乎不太能見到。ip

 

    ACSII內存

    包含英文字母在內的128個常見字符集,因此每一個字符的編碼長度爲:1 字節。

 

    Unicode

    統一碼,幾乎涵蓋世上全部的符號。只定義了字符與二進制碼的對應關係,未定義二進制碼的存儲、解析規則。

            UTF-8(8-bit Unicode Transformation Format):針對Unicode的可變長字符編碼。每一個字符的編碼長度爲:1 ~ 6 字節。

    UTF-16:也是一種針對Unicode的可變長字符編碼。每一個字符的編碼長度爲:2 ~ 4 字節。

 

    GBK

    漢字內碼擴展規範,是對GB2312(即CP936)的擴展,收錄了漢字及圖形符號。通常不特殊說明,GB23十二、CP93六、GBK都指的是GBK。

            每一個字符的編碼長度爲: 1 ~ 2 字節。

 

   根據上面介紹,有些時候須要用多個字節來表示一個字符,那麼就要關注一下內存的存儲方式啦。

 

   LE(Little Endian):

  小字端存儲,低位數字在前,放在低位。如,十六進制0x1234,存儲後爲:0x34 0x12

 

   BE(Big Endian):

  大字端存儲,高位數字在前,放在低位。如,十六進制0x1234,存儲後爲:0x12 0x34

 

參考連接:

字符編碼筆記:ACSII,Unicode和UTF-8 (其實基本就是這篇的閱讀筆記)

ACSII

Unicode / UTF-8 / UTF-16

GB 2312 / GBK

EBCDIC

相關文章
相關標籤/搜索