日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

UTF-8,ISO 10646的一種轉(zhuǎn)換格式( 二 )


(比如C庫(kù)中printf()函數(shù))的兼容性 , 方便解析器解析US-ASCII值 , 且對(duì)其他值透
明 。
-UTF-8向UCS-4 , UCS-2兩者中任一個(gè)進(jìn)行相互轉(zhuǎn)換比較輕易 。
-多8比特字節(jié)序列的第一個(gè)8比特字節(jié)指明了系列中8比特字節(jié)的數(shù)目 。
-8比特字節(jié)值FE和FF永遠(yuǎn)不會(huì)出現(xiàn) 。
-在8比特字符流中字符邊界從哪里開(kāi)始較輕易發(fā)現(xiàn) 。
-UCS-4字符串的字典分類(lèi)順序保留 。由于分類(lèi)順序在任一情況下不是文化上有效 , 因此
它的重要性當(dāng)然有限 。
-Boyer-Moore快速搜索算法可以用于UTF-8數(shù)據(jù) 。
-UTF-8字符串可以通過(guò)一個(gè)簡(jiǎn)單的算法進(jìn)行可靠性驗(yàn)證 , 也就是說(shuō) , 在任何一種編碼下 ,
驗(yàn)證有效UTF-8字符串的耗費(fèi)是低廉的 , 隨著字符長(zhǎng)度增加而縮小 。
UTF-8源于X/Open聯(lián)合國(guó)際化組織XOJIG的項(xiàng)目 , 用于描述文件系統(tǒng)的安全UCS轉(zhuǎn)
換格式[FSS-UTF] , 以便和UNIX系統(tǒng)兼容 , 以及在一種單一編碼中支持多種語(yǔ)言的文字 。
最開(kāi)始的作者是GaryMiller,GregerLeijonhufvud和JohnEntenmann 。后來(lái)KenThompson
和RobPike對(duì)UTF-8格式作了大量的工作 。
也可以從Unicode技術(shù)支持報(bào)告#4和Unicode標(biāo)準(zhǔn)2.0[UNICODE]中找到UTF-8的描
述 。權(quán)威性的引用 , 包括對(duì)UTF-16數(shù)據(jù)包含UTF-8的規(guī)定 , 在ISO/IEC10646-1[ISO-10646]
附錄R中進(jìn)行了闡述 。
2、UTF-8定義
在UTF-8中 , 字符采用1到6個(gè)8比特字節(jié)的序列進(jìn)行編碼 。僅僅一個(gè)8比特字節(jié)的一
個(gè)序列中 , 字節(jié)的高位為0 , 其他的7位用于字符值編碼 。n(n>1)個(gè)8比特字節(jié)的一個(gè)序
列中 , 初始的8比特字節(jié)中高n位為1 , 接著一位為0 , 此字節(jié)余下的位包含被編碼字符值的
位 。接著的所有8比特字節(jié)的最高位為1 , 接著下一位為0 , 余下每個(gè)字節(jié)6位包含被編碼字
符的位 。
下表總結(jié)了這些不同的8比特字節(jié)類(lèi)型格式 。字母x指出此位來(lái)自于進(jìn)行編碼的UCS-4
字符值 。
UCS-4范圍(16進(jìn)制)UTF-8系列(二進(jìn)制)
00000000-0000007F0xxxxxxx
00000080-000007FF110xxxxx10xxxxxx
00000800-0000FFFF1110xxxx10xxxxxx10xxxxxx
00010000-001FFFFF11110xxx10xxxxxx10xxxxxx10xxxxxx
00200000-03FFFFFF111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx
04000000-7FFFFFFF1111110x10xxxxxx...10xxxxxx
從UCS-4到UTF-8編碼過(guò)程如下:
1)從字符值和上表第一列中決定需要的8比特字節(jié)數(shù)目 。著重指出的是上表中的行是相
互排斥的 , 也就是說(shuō) , 對(duì)于一個(gè)給定的UCS-4字符 , 僅僅有一個(gè)有效的編碼 。
2)按照上表中第二列每行那樣預(yù)備8比特字節(jié)的高位 。
3)將字符值的位填充在標(biāo)記為x地方 , 從字符值的低位開(kāi)始 , 將它們放在系列中最后的
8比特字節(jié)中 , 然后字符值的接著位放置到下一個(gè)8比特字節(jié) , 如此重復(fù) , 直到所有標(biāo)
記位x的位都進(jìn)行了填充 。
理論上 , 簡(jiǎn)單的通過(guò)用2個(gè)0值的8比特字節(jié)來(lái)擴(kuò)展每個(gè)UCS-2字符 , 則從UCS-2到
UTF-8編碼的算法可以從上面得到 。然而 , 從D800到DFFF間的UCS-2值對(duì)(用Unicode
說(shuō)法是代理對(duì)) , 實(shí)際上是通過(guò)UTF-16來(lái)進(jìn)行UCS-4字符轉(zhuǎn)換 , 因此需要非凡對(duì)待:UTF-16
轉(zhuǎn)換必須未完成 , 先轉(zhuǎn)換到于UCS-4字符 , 然后按照上面過(guò)程進(jìn)行轉(zhuǎn)換 。
從UTF-8到UCS-4解碼過(guò)程如下:
1)初始化UCS-4字符4個(gè)8比特字節(jié)的所有位為0 。
2)根據(jù)序列中8比特字節(jié)數(shù)和上表中第二列(標(biāo)記為x位)來(lái)決定哪些位編碼用于字符
值 。
3)從編碼序列分配位到UCS-4字符 。首先從序列最后一個(gè)8比特字節(jié)的最低位開(kāi)始 , 接
著向左進(jìn)行 , 直到所有標(biāo)記為x的位完成 。
假如UTF-8序列長(zhǎng)度不大于3個(gè)8比特字節(jié) , 解碼過(guò)程可以直接賦予UCS-2 。

推薦閱讀