轉載:http://blog.csdn.net/allen5200/article/details/6319832
ASCII-American Standard Code for Information Interchange
- Character repertoire:
ASCII 嚴格來講就是7個bit大小的字元集,也就是code point介於0-127之間的字元集合。
- Character code:
32-126之間的字元是可列印字元,其他是控制字元。
- Character encoding:
ASCII可以沒有任何編碼就可以在電腦中用一個位元組表示,也就是每個code point被表示成等價的單位元組二進位形式。
LATIN1-8bit sing byte coded graphic character sets.
- Character repertoire:
Aka ISO-8859-1。是7bit ASCII 字元集的擴充的一種,是8個bit大小的字元集,也就是code point 介於0-255之間的字元集和。
- Character code:
包含有191個可列印字元,其餘是控制字元或者擴充的歐洲特殊字元。
- Character encoding:
與ASCII相似, 每個code point被表示成等價的單位元組二進位形式。
UTF8-8bit Unicode Transfer Format
- Character repertoire:
包含世界上大部分書寫系統的使用的字元,大概1百萬個code point (1,114,112 = 220 + 216 )。
- Character code:
2,684個保留字元。 98893個圖形字元。 435個控制,格式化等特殊用途的字元 。
- Character encoding:
是針對Unicode的一種變長的字元編碼。能表示Unicode標準中任意一個字元。 UTF8可以將一個字元編碼乘1到4個位元組大小來表示。
1. 128US-ASCII 字元需要一個位元組(U+0000-U+007F)
2. 對於帶有區分符號的Latin字母和來自西歐的字元需要兩個位元組(U+0080-U+7FF)
3. BMP其他的字元需要3個位元組
4. Non-BMP的其他字元需要4個位元組。
ASCII, LATIN1, UTF8 關係:
為了向後相容, Unicode分配128ASCII和256 LATIN1字元的code point沒有改變,與它們在ASCII和Latin1的code point 相同。 因此一個只包含ASCII字元的UTF8檔案等同於ASCII檔案。 同理,每個正確編碼的ASCII檔案也是有效地UTF8檔案。對於12-256的LATIN1字元,因為其編碼的特殊性-UTF8需要2個位元組來表示一個 LATIN1字元,也就是二者編碼的檔案當然不能等價。
如果只考慮各個編碼單位元組的外圍:ASCII(0-127), LATIN1(0-255), UTF8(0-253), 一個UTF8編碼的字串也能被儲存為LATIN1檔案,但顯然是亂碼的。反過來,LATIN1編碼的檔案是無法存為一個UTF8的檔案,因為一個大於 253的字元在UTF8中是不存在的。