Unicode和UTF-8的區別
阿新 • • 發佈:2020-11-22
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》