編碼格式詳解

計算機中存儲信息的最小單元是一個字節即 8 個 bit,因此能表示的字符範圍是 0~255 個windows

人類要表示的符號太多,沒法用一個字節來徹底表示網絡

ASCII 碼編碼

學過計算機的人都知道 ASCII 碼,總共有 128 個,用一個字節的低 7 位表示,0~31 是控制字符如換行回車刪除等;32~126 是打印字符,能夠經過鍵盤輸入而且可以顯示出來。spa

ISO-8859-1翻譯

128 個字符顯然是不夠用的,因而 ISO 組織在 ASCII 碼基礎上又制定了一些列標準用來擴展 ASCII 編碼,它們是 ISO-8859-1~ISO-8859-15,其中 ISO-8859-1 涵蓋了大多數西歐語言字符,全部應用的最普遍。ISO-8859-1 仍然是單字節編碼,它總共能表示 256 個字符。code

GB2312內存

它的全稱是《信息交換用漢字編碼字符集 基本集》,它是雙字節編碼,總的編碼範圍是 A1-F7,其中從 A1-A9 是符號區,總共包含 682 個符號,從 B0-F7 是漢字區,包含 6763 個漢字。文檔

GBK字符串

全稱叫《漢字內碼擴展規範》,是國家技術監督局爲 windows95 所制定的新的漢字內碼規範,它的出現是爲了擴展 GB2312,加入更多的漢字,它的編碼範圍是 8140~FEFE(去掉 XX7F)總共有 23940 個碼位,它能表示 21003 個漢字,它的編碼是和 GB2312 兼容的,也就是說用 GB2312 編碼的漢字能夠用 GBK 來解碼,而且不會有亂碼。it

GB18030

全稱是《信息交換用漢字編碼字符集》,是我國的強制標準,它多是單字節、雙字節或者四字節編碼,它的編碼與 GB2312 編碼兼容,這個雖然是國家標準,可是實際應用系統中使用的並不普遍。

UTF-16

說到 UTF 必需要提到 Unicode(Universal Code 統一碼),ISO 試圖想建立一個全新的超語言字典,世界上全部的語言均可以經過這本字典來相互翻譯。可想而知這個字典是多麼的複雜,關於 Unicode 的詳細規範能夠參考相應文檔。Unicode 是 Java 和 XML 的基礎,下面詳細介紹 Unicode 在計算機中的存儲形式。

UTF-16 具體定義了 Unicode 字符在計算機中存取方法。UTF-16 用兩個字節來表示 Unicode 轉化格式,這個是定長的表示方法,不論什麼字符均可以用兩個字節表示,兩個字節是 16 個 bit,因此叫 UTF-16。UTF-16 表示字符很是方便,每兩個字節表示一個字符,這個在字符串操做時就大大簡化了操做,這也是 Java 以 UTF-16 做爲內存的字符存儲格式的一個很重要的緣由。

UTF-8

UTF-16 統一採用兩個字節表示一個字符,雖然在表示上很是簡單方便,可是也有其缺點,有很大一部分字符用一個字節就 能夠表示的如今要兩個字節表示,存儲空間放大了一倍,在如今的網絡帶寬還很是有限的今天,這樣會增大網絡傳輸的流量,並且也不必。而 UTF-8 採用了一種變長技術,每一個編碼區域有不一樣的字碼長度。不一樣類型的字符能夠是由 1~6 個字節組成

UTF-8 有如下編碼規則:

若是一個字節,最高位(第 8 位)爲 0,表示這是一個 ASCII 字符(00 - 7F)。可見,全部 ASCII 編碼已是 UTF-8 了。

若是一個字節,以 11 開頭,連續的 1 的個數暗示這個字符的字節數,例如:110xxxxx 表明它是雙字節 UTF-8 字符的首字節。

若是一個字節,以 10 開始,表示它不是首字節,須要向前查找才能獲得當前字符的首字節

做者:艾小天兒 連接:https://www.jianshu.com/p/43a30291bb9b 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索