2、ASCII
計算機內部的數據最終以二進(jìn)制形式存放,每個(gè)二進(jìn)制位(bit)有0和1兩種狀態(tài),而8個(gè)二進(jìn)制位(bit)組合稱(chēng)為一個(gè)字節(Byte),所以一個(gè)字節能夠組合出256中狀態(tài),即從00000000到11111111。
上世紀70年代,美國國度標準協(xié)會(huì )(American National Standard Institute , ANSI )制訂了ASCII碼(American Standard Code for Information Interchange,美國標準信息交換碼):使用7 位二進(jìn)制數共128個(gè)組合來(lái)表示所有的大寫(xiě)和小寫(xiě)字母,數字0 到9、標點(diǎn)符號, 以及在美式英語(yǔ)中使用的特殊控制字符。
PS:在計算機的存儲單元中,一個(gè)ASCII碼值占一個(gè)字節(8個(gè)二進(jìn)制位),其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過(guò)程中用來(lái)檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個(gè)字節中1的個(gè)數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個(gè)字節中1的個(gè)數必須是偶數,若非偶數,則在最高位b7添1。
3、UNICODE
一個(gè)字節中的后7位總共只能表示128個(gè)不同的字符,英語(yǔ)用這些字符已經(jīng)足夠了,可是要表示其他語(yǔ)言卻是不夠。比如,在法語(yǔ)中,字母上方有注音的符號,就無(wú)法用ASCII表示。于是,一些國家就利用了字節中閑置的最高位編入新的符號。這樣一來(lái),就可以表示最多256個(gè)符號,這就是擴展的ASCII 碼,所以現在有7位和8位的兩種ASCII碼,擴展的ASCII 碼允許將每個(gè)字符的第8 位用于確定附加的128 個(gè)特殊符號字符、外來(lái)語(yǔ)字母和圖形符號。但是,不管怎樣,0~127表示的字符是一樣的,不同的只是128~255.
PS:查詢(xún)后128個(gè)ASCII對應字符的技巧:新建一個(gè)文本文檔,按住ALT+要查詢(xún)的碼值(注意,這里是十進(jìn)制) ,松開(kāi)即可顯示出對應字符。
但即使擴展到256個(gè)符號也不夠用,比如漢字據統計有10萬(wàn)個(gè)以上,而且同一個(gè)數值在各國的語(yǔ)言中表示的卻不同,比如130在法語(yǔ)里面é,而在希臘語(yǔ)里面則代表Gimel。于是UNICODE應運而生。
Unicode字符集編碼是Universal Multiple-Octet Coded Character Set 通用多八位編碼字符集的簡(jiǎn)稱(chēng),是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。
Unicode是一種在計算機上使用的字符編碼。它為每種語(yǔ)言中的每個(gè)字符設定了統一并且唯一的二進(jìn)制編碼,以滿(mǎn)足跨語(yǔ)言、跨平臺進(jìn)行文本轉換、處理的要求。Unicode 標準始終使用十六進(jìn)制數字,而且在書(shū)寫(xiě)時(shí)在前面加上前綴“U+”,例如字母“A”的編碼為 004116 和字符“?”的編碼為 20AC16。所以“A”的編碼書(shū)寫(xiě)為“U+0041”。但Unicode只是一個(gè)符號集,它只規定了符號的二進(jìn)制代碼,卻沒(méi)有規定這個(gè)二進(jìn)制代碼應該如何存儲。
4、UTF-8
事實(shí)證明,對可以用ASCII表示的字符使用UNICODE并不高效,因為UNICODE比ASCII占用大一倍的空間,而對ASCII來(lái)說(shuō)高字節的0對 他毫無(wú)用處。為了解決這個(gè)問(wèn)題,就出現了一些中間格式的字符集,他們被稱(chēng)為通用轉換格式,即UTF(Universal Transformation Format)。目前存在的UTF格式有:UTF-7, UTF-7.5, UTF-8, UTF-16, 以及 UTF-32。
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長(cháng)度字符編碼(定長(cháng)碼),也是一種前綴碼。它可以用來(lái)表示Unicode標準中的任何字符,且其編碼中的第 一個(gè)字節仍與ASCII兼容,這使得原來(lái)處理ASCII字符的軟件無(wú)須或只須做少部份修改,即可繼續使用。因此,它逐漸成為電子郵件、網(wǎng)頁(yè)及其他存儲或傳 送文字的應用中,優(yōu)先采用的編碼。
UTF-8用1~4個(gè)字節對Unicode進(jìn)行編碼。從Unicode到UTF-8的編碼方式如下:
000000 - 00007F║0xxxxxxx
000080 - 0007FF║110xxxxx 10xxxxxx
000800 - 00FFFF║1110xxxx 10xxxxxx 10xxxxxx
010000 - 10FFFF║11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
UTF-8編碼的最大長(cháng)度是4個(gè)字節。從上表可以看出,4字節模板有21個(gè)x,即可以容納21位二進(jìn)制數字。Unicode的最大碼位0x10FFFF也只有21位。
UTF-8解析算法:
聯(lián)系客服