1. 程式人生 > 實用技巧 >Unicode和UTF-8的區別

Unicode和UTF-8的區別

Unicode和Utf-8的區別

ISO/Unicode組織共同釋出能夠溝唯一地表示各種語言中的字元標準,通常情況下,我們將一個標準中能夠表示的所有字元的集合稱為字符集。通常,我們稱ISO/Unicode所定義的字符集為Unicode。在Unicode中,每一個字元佔據一個碼位(Code Point)。Unicode字符集共定義1 114 112個這樣的碼位,使用0-10FFFF的十六進位制數唯一地表示所有的字元。

比較常見的基於Unicode字符集的編碼方式有Utf-8,Utf-16,Utf-32(一般人將Utf-16和Unicode混為一談)

以UTF-8為例,其採用1-6位元組的變長編碼方式編碼Unicode。英文使用1個位元組,中文使用3個位元組。UTF-8的編碼方式如下:

Unicode符號範圍(十六進位制)        UTF-8編碼方式(二進位制)

0000 0000 - 0000 007F           0xxx xxxx
0000 0080 - 0000 07FF           110x xxxx  10xx xxxx
0000 0800 - 0000 7FFF           1110 xxxx  10xx xxxx  10xx xxxx
0001 0000 - 0010 FFFF           1111 0xxx  10xx xxxx  10xx xxxx  10xx xxxx

Window採用UTF-16編碼方式,Mac OS、Linux採用UTF-8編碼方式

GB2312字符集:收入6763個漢字和682個非漢字圖形字元。而在編碼上,採用基於區位碼的一種編碼方式,採用2個位元組表示一箇中文字元。

BIG5字符集:常用於繁體中文,共收入13 060箇中文字,也採用2位元組的方式表示繁體中文。在中國臺灣、香港、澳門等地區廣泛使用。

由此可見,不同的編碼方式對於相同的二進位制字串的解釋是不同的。

Unicode還在發展期,Unicode、GB2312以及Big5等多種編碼共存的狀況可能在以後較長的時間內會持續下去。

摘自:《深入淺出C++11》