欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
UTF-8字符集基礎
 UTF-8 字符集基礎




作者: Marius Bancila 翻譯: wangxg


字符集簡(jiǎn)史


在所有字符集中,最知名可能要數被稱(chēng)為ASCII的7位字符集了。它是美國信息交換標準委員會(huì )(American Standards Committee for Information Interchange)的縮寫(xiě), 為美國英語(yǔ)通信所設計。它由128個(gè)字符組成,包括大小寫(xiě)字母、數字0-9、標點(diǎn)符號、非打印字符(換行符、制表符等4個(gè))以及控制字符(退格、響鈴等)組成。


但是,由于他是針對英語(yǔ)設計的,當處理帶有音調標號(形如漢語(yǔ)的拼音)的歐洲文字時(shí)就會(huì )出現問(wèn)題。因此,創(chuàng )建出了一些包括255個(gè)字符的由ASCII擴展的字符集。其中有一種通常被成為IBM字符集,它把值為128-255之間的字符用于畫(huà)圖和畫(huà)線(xiàn),以及一些特殊的歐洲字符。另一種8位字符集是ISO 8859-1 Latin 1,也簡(jiǎn)稱(chēng)為ISO Latin-1。它把位于128-255之間的字符用于拉丁字母表中特殊語(yǔ)言字符的編碼,也因此而得名。


歐洲語(yǔ)言不是地球上的唯一語(yǔ)言,因此亞洲和非洲語(yǔ)言并不能被8位字符集所支持。僅漢語(yǔ)(或pictograms)字母表就有80000以上個(gè)字符。但是把漢語(yǔ)、日語(yǔ)和越南語(yǔ)的一些相似的字符結合起來(lái),在不同的語(yǔ)言里,使不同的字符代表不同的字,這樣只用2個(gè)字節就可以編碼地球上幾乎所有地區的文字。因此,創(chuàng )建了UNICODE編碼。它通過(guò)增加一個(gè)高字節對ISO Latin-1字符集進(jìn)行擴展,當這些高字節位為0時(shí),低字節就是ISO Latin-1字符。UNICODE支持歐洲、非洲、中東、亞洲(包括統一標準的東亞像形漢字和韓國像形文字)。但是,UNICODE并沒(méi)有提供對諸如Braille, Cherokee, Ethiopic, Khmer, Mongolian, Hmong, Tai Lu, Tai Mau文字的支持。同時(shí)它也不支持如Ahom, Akkadian, Aramaic, Babylonian Cuneiform, Balti, Brahmi, Etruscan, Hittite, Javanese, Numidian, Old Persian Cuneiform, Syrian之類(lèi)的古老的文字。


事實(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字符集的基礎。


UTF_8字符集


UTF-8是UNICODE的一種變長(cháng)字符編碼,由Ken Thompson于1992年創(chuàng )建?,F在已經(jīng)標準化為RFC 3629。UTF-8用1到6個(gè)字節編碼UNICODE字符。如果UNICODE字符由2個(gè)字節表示,則編碼成UTF-8很可能需要3個(gè)字節,而如果UNICODE字符由4個(gè)字節表示,則編碼成UTF-8可能需要6個(gè)字節。用4個(gè)或6個(gè)字節去編碼一個(gè)UNICODE字符可能太多了,但很少會(huì )遇到那樣的UNICODE字符。


UFT-8轉換表表示如下:


UNICODE UTF-8


+--------

00000000 - 0000007F 0xxxxxxx 00000080 - 000007FF 110xxxxx 10xxxxxx 00000800 - 0000FFFF 1110xxxx 10xxxxxx 10xxxxxx 00010000 - 001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 00200000 - 03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 04000000 - 7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

實(shí)際表示ASCII字符的UNICODE字符,將會(huì )編碼成1個(gè)字節,并且UTF-8表示與ASCII字符表示是一樣的。所有其他的UNCODE字符轉化成UTF-8將需要至少2個(gè)字節。每個(gè)字節由一個(gè)換碼序列開(kāi)始。第一個(gè)字節由唯一的換碼序列,由n位1加一位0組成。n位1表示字符編碼所需的字節數。


示例


UNICODE uCA(11001010) 編碼成UTF-8將需要2個(gè)字節:


uCA -> C3 8A


UNICODE uF03F (11110000 00111111) 編碼成UTF-8將需要3個(gè)字節:


u F03F -> EF 80 BF


譯者注:由上分析可以看到,UNCODE到UTF-8的轉換就是先確定編碼所需要的字節數,然后用UNICODE編碼位從低位到高位依次填入上面表示為x的位上,不足的高位以0補充。以上是個(gè)人經(jīng)驗,如有錯誤,請不惜指教,謝過(guò)先:)


UTF-8編碼的優(yōu)點(diǎn):


UTF-8編碼可以通過(guò)屏蔽位和移位操作快速讀寫(xiě)。字符串比較時(shí)strcmp()和wcscmp()的返回結果相同,因此使排序變得更加容易。字節FF和FE在UTF-8編碼中永遠不會(huì )出現,因此他們可以用來(lái)表明UTF-16或UTF-32文本(見(jiàn)BOM) UTF-8 是字節順序無(wú)關(guān)的。它的字節順序在所有系統中都是一樣的,因此它實(shí)際上并不需要BOM。


UTF-8編碼的缺點(diǎn):


你無(wú)法從UNICODE字符數判斷出UTF-8文本的字節數,因為UTF-8是一種變長(cháng)編碼它需要用2個(gè)字節編碼那些用擴展ASCII字符集只需1個(gè)字節的字符 ISO Latin-1 是UNICODE的子集,但不是UTF-8的子集 8位字符的UTF-8編碼會(huì )被email網(wǎng)關(guān)過(guò)濾,因為internet信息最初設計為7為ASCII碼。因此產(chǎn)生了UTF-7編碼。 UTF-8 在它的表示中使用值100xxxxx的幾率超過(guò)50%, 而現存的實(shí)現如ISO 2022, 4873, 6429, 和8859系統,會(huì )把它錯認為是C1 控制碼。因此產(chǎn)生了UTF-7.5編碼。


修正的UTF-8:


java使用UTF-16表示內部文本,并支持用于字符串串行化的非標準的修正UTF-8編碼。標準UTF-8和修正的UTF-8有兩點(diǎn)不同:修正的UTF-8中,null字符編碼成2個(gè)字節(11000000 00000000) 而不是標準的1個(gè)字節(00000000),這樣作可以保證編碼后的字符串中不會(huì )嵌入null字符。因此如果在類(lèi)C語(yǔ)言中處理字符串,文本不會(huì )在第一個(gè)null字符時(shí)截斷(C字符串以null結尾)。在標準UTF-8編碼中,超出基本多語(yǔ)言范圍(BMP - Basic Multilingual Plain)的字符被編碼為4字節格式,但是在修正的UTF-8編碼中,他們由代理編碼對(surrogate pairs)表示,然后這些代理編碼對在序列中分別重新編碼。結果標準UTF-8編碼中需要4個(gè)字節的字符,在修正后的UTF-8編碼中將需要6個(gè)字節。


位序標志BOM


BOM(Byte Order Mark)是一個(gè)字符,它表明UNICODE文本的UTF-16,UTF-32的編碼字節順序(高字節低字節順序)和編碼方式(UTF-8,UTF-16,UTF-32, 其中UTF-8編碼是字節順序無(wú)關(guān)的)。


如下所示:


Encoding Representation


UTF-8 EF BB BF UTF-16 Big Endian FE FF UTF-16 Little Endian FF FE UTF-32 Big Endian 00 00 FE FF UTF-32 Little Endian FF FE 00 00 ......

限譯者水平有限,有不解之處請參考原文。版權屬原文作者所有,轉載請注明出處及作者。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
中文化和國際化問(wèn)題權威解析之一:字符編碼發(fā)展歷程
編碼方式之ASCII、ANSI、Unicode概述
unicode和MBCS(多字節字符集)的關(guān)系
常見(jiàn)字符編碼辨析
dannyrao: 字符編碼
終于搞懂了 Unicode、UTF-8、UTF-16
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久