從ASCII、GB2312、GBK到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中總是有相同的編碼,后面的標準支持更多的字符。而Unicode只與ASCII兼容(更準確地說,是與ISO-8859-1兼容),與GB碼不兼容。例如“漢”字的Unicode編碼是6C49,而GB碼是BABA。
因此如果一個系統支持GB碼,而另一個系統支持UNICODE碼,這兩個系統如果想進行“說話”的話。二者必須進行轉碼。
但是不同的編碼對應的機內碼也是不一樣的,比如漢字“啊”,采用GB2312的方式存到內存的數可能是BABA,但是UNICODE碼存到內存中的數為1234。
在計算機中字符通常并不是保存為圖像,每個字符都是使用一個編碼來表示的,而每個字符究竟使用哪個編碼代表,要取決于使用哪個字符集(charset)。
“中國北京香蕉是個大笨蛋”這是我定義的aka字符集;各字符對應代碼點為:
北 00000001
京 00000010
香 10000001
蕉 10000010
是 10000100
個 10001000
大 10010000
笨 10100000
蛋 11000000
中 00000100
國 00001000
下面是我定義的 zixia 編碼方案(8位),可以看到它的編碼中表示了aka字符集的所有字符對應的 代碼單元;
北 10000001
京 10000010
香 00000001
蕉 00000010
是 00000100
個 00001000
大 00010000
笨 00100000
蛋 01000000
中 10000100
國 10001000
所謂文本文件 就是我們按一定編碼方式將二進制數據表示為對應的文本如00000001000000100000010000001000000100000010000001000000這樣的文件。我用一個支持zixia編碼和aka字符集的記事本打開,它就按照編碼方案顯示為 “香蕉是個大笨蛋 ”
如果我把這些字符按照GBK另存一個文件,那么則肯定不是這個,而是
1100111111100011 1011110110110110 1100101011000111 1011100011110110 1011010011110011 1011000110111111 1011010110110000 110100001010
|