UTF-八、UTF-16 和 Unicode 有什麼聯繫

UTF-八、UTF-16 和 Unicode 有什麼聯繫

起源

在計算機發明之初,因爲計算機只能存儲二進制的數據,美國人民爲了交流通訊方便,約定了一個編碼規範,也就是 ASCIIAmerican Standard Code for Information Interchange:美國信息交換標準代碼);編碼

ASCII 是基於拉丁字母的一套電腦編碼系統,是 單字節編碼,主要用於顯示現代英語和其餘西歐語言。
它使用 7 位二進制數(剩下的1位二進制爲0)來表示全部的大寫和小寫字母,數字0 到九、標點符號,以及在美式英語中使用的特殊控制字符。

隨着計算機傳到了歐洲,發現不少符號(法語,德語等)沒辦法用 ASCII 表示,因而歐洲人本身也擼了一套編碼,也就是 ISO/IEC 8859-1code

ISO/IEC 8859-1 也是 單字節編碼,而且向下兼容 ASCII,其編碼範圍是 0x00-0xFF0x00-0x7F之間徹底和 ASCII一致, 0x80-0x9F之間是控制字符, 0xA0-0xFF之間是文字符號。
ASCII的區別體如今: ASCII是一個7位的容器, ISO-8859-1是一個8位的容器。

再後來,計算機就傳入了中國,中國漢字少說就有幾萬,經常使用的就有幾千個了。若是要表示中文,顯然一個字節是不夠的,至少須要兩個字節,並且還不能和ASCII編碼衝突,因此,中國製定了GB2312編碼,用來把中文編進去。因而乎,咱們就擼出了一套GBK,並向下兼容ASCIIorm

GBK 全稱《漢字內碼擴展規範》(GBK即「國標」、「擴展」漢語拼音的第一個字母,英文名稱: Chinese Internal Code Specification),採用 雙字節編碼,其編碼範圍從8140至FEFE(剔除xx7F),共23940個碼位,共收錄了21003個漢字,徹底兼容GB2312-80標準,支持國際標準ISO/IEC10646-1和國家標準GB13000-1中的所有中日韓漢字,幷包含了BIG5編碼中的全部漢字。

這時國際組織看不下去了,要是這樣下去每一個地區都出一套本身的編碼,那還得了。因而乎擼了一套把你們的編碼都概括進去的編碼,也就是 unicode編碼ci

Unicode(統一碼、萬國碼、單一碼)是計算機科學領域裏的一項業界標準,包括字符集、編碼方案等。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,以知足跨語言、跨平臺進行文本轉換、處理的要求。
Unicode 只是一種 字符碼錶, 而在計算機中進行存儲時,必須指定一種具體的存儲方式。常見的如 utf8, utf16, utf32等。

UTF—8

UTF—8(8-bit Unicode Transformation Format),以8位無符號整數爲單位對Unicode進行編碼。unicode

UTF-8 的特色是對不一樣範圍的字符使用不一樣長度的編碼,是一種變長編碼,對於一個Unicode的字符被編碼成1至4個字節。對於0x00-0x7F之間的字符,UTF-8 編碼與 ASCII 編碼徹底相同。it

UTF-8編碼的最大長度是4個字節,便可以容納21位二進制數字。而 Unicode 的最大碼位0x10FFFF也只有21位。io

Unicode UTF-8
U+0000 – U+007F 0xxxxxxx
U+0080 – U+07FF 110xxxxx 10xxxxxx
U+0800 – U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
U+10000 – U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
一個字節的uft8表示的unicode 碼範圍爲( 0 ~0x7F)

兩個字節長度的uft8 表示的unicode碼範圍爲(0x80 ~ 0x07FF)字符編碼

三個字節長度的uft8 表示的unicode碼範圍爲(0x0800 ~ 0xFFFF)table

四個字節長度的uft8 表示的unicode碼範圍爲(0x10000 ~ 0x10FFFF)form

UTF—16

UTF—16(16-bit Unicode Transformation Format),以16位無符號整數爲單位對Unicode進行編碼。

UTF-16 也是一種變長編碼,對於一個Unicode的字符被編碼成1~2個code unit,每一個code unit使用16位 (2個字節)。

相關文章
相關標籤/搜索