學過計算機的人都知道 ASCII 碼,總***有 128 個,用壹個字節的低 7 位表示,0~31 是控制字符如換行回車刪除等;32~126 是打印字符,可以通過鍵盤輸入並且能夠顯示出來。
ISO-8859-1(擴展ASCII編碼)128 個字符顯然是不夠用的,於是 ISO 組織在 ASCII 碼基礎上又制定了壹些列標準用來擴展 ASCII 編碼,它們是 ISO-8859-1~ISO-8859-15,其中 ISO-8859-1 涵蓋了大多數西歐語言字符,所有應用的最廣泛。ISO-8859-1 仍然是單字節編碼,它總***能表示 256 個字符。
GB2312它的全稱是《信息交換用漢字編碼字符集 基本集》,它是雙字節編碼,總的編碼範圍是 A1-F7,其中從 A1-A9 是符號區,總***包含 682 個符號,從 B0-F7 是漢字區,包含 6763 個漢字。
GBK(擴展GB2312)全稱叫《漢字內碼擴展規範》,是國家技術監督局為 windows95 所制定的新的漢字內碼規範,它的出現是為了擴展 GB2312,加入更多的漢字,它的編碼範圍是 8140~FEFE(去掉 XX7F)總***有 23940 個碼位,它能表示 21003 個漢字,它的編碼是和 GB2312 兼容的,也就是說用 GB2312 編碼的漢字可以用 GBK 來解碼,並且不會有亂碼。
GB18030(兼容GB2312)全稱是《信息交換用漢字編碼字符集》,是我國的強制標準,它可能是單字節、雙字節或者四字節編碼,它的編碼與 GB2312 編碼兼容,這個雖然是國家標準,但是實際應用系統中使用的並不廣泛。
Unicode編碼集UTF-16 統壹采用兩個字節表示壹個字符,雖然在表示上非常簡單方便,但是也有其缺點,有很大壹部分字符用壹個字節就可以表示的現在要兩個字節表示,存儲空間放大了壹倍,在現在的網絡帶寬還非常有限的今天,這樣會增大網絡傳輸的流量,而且也沒必要。而 UTF-8 采用了壹種變長技術,每個編碼區域有不同的字碼長度。不同類型的字符可以是由 1~6 個字節組成。
UTF-8 有以下編碼規則:
UTF-16 具體定義了 Unicode 字符在計算機中存取方法。UTF-16 用兩個字節來表示 Unicode 轉化格式,這個是定長的表示方法,不論什麽字符都可以用兩個字節表示,兩個字節是 16 個 bit,所以叫 UTF-16。UTF-16 表示字符非常方便,每兩個字節表示壹個字符,這個在字符串操作時就大大簡化了操作,這也是 Java 以 UTF-16 作為內存的字符存儲格式的壹個很重要的原因。
ISO 試圖想創建壹個全新的超語言字典,世界上所有的語言都可以通過這本字典來相互翻譯。可想而知這個字典是多麽的復雜,關於 Unicode 的詳細規範可以參考相應文檔。Unicode 是 Java 和 XML 的基礎,下面詳細介紹 Unicode 在計算機中的存儲形式。
UTF-16
UTF-8
如果壹個字節,最高位(第 8 位)為 0,表示這是壹個 ASCII 字符(00 - 7F)。可見,所有 ASCII 編碼已經是 UTF-8 了。
如果壹個字節,以 11 開頭,連續的 1 的個數暗示這個字符的字節數,例如:110xxxxx 代表它是雙字節 UTF-8 字符的首字節。
如果壹個字節,以 10 開始,表示它不是首字節,需要向前查找才能得到當前字符的首字節?
詳情傳送門至:網頁鏈接