溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

DBCS和UCS編碼相關(guān)

發(fā)布時(shí)間:2020-06-27 15:13:09 來源:網(wǎng)絡(luò) 閱讀:145 作者:xiesiyuana 欄目:開發(fā)技術(shù)
ASCII、GB2312、GBK到GB18030都是向下兼容的,其中GB2312、GBK到GB18030都屬于雙字節(jié)字符集(DBCS字符集)
Unicode至于ANSI兼容,例如“漢”字的unicode編碼是6C49,而GB編碼是BABA
Unicode學(xué)名是“Universal Multiple-Octet Coded Chasracter Set”,簡稱UCS
UCS只是規(guī)定如何編碼,并沒有規(guī)定如何傳輸、保存這個(gè)編碼。例如“漢”字的UCS編碼是6C49,
我可以用4個(gè)ascii數(shù)字來傳輸、保存這個(gè)編碼;也可以用utf-8編碼:3個(gè)連續(xù)的字節(jié)E6 B1 89來表示它。
關(guān)鍵在于通信雙方都要認(rèn)可。UTF-8、UTF-7、UTF-16都是被廣泛接受的方案。


UTF-8就是以8位為單元對(duì)UCS進(jìn)行編碼。從UCS-2到UTF-8的編碼方式如下:
UCS-2編碼(16進(jìn)制) UTF-8 字節(jié)流(二進(jìn)制) 0000 - 007F 0xxxxxxx 0080 - 07FF 110xxxxx 10xxxxxx 0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
例如“漢”字的Unicode編碼是6C49。6C49在0800-FFFF之間,所以肯定要用3字節(jié)模板了:1110xxxx 10xxxxxx 10xxxxxx。將6C49寫成二進(jìn)制是:0110 110001 001001,
 用這個(gè)比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。
 
 
 UTF-8以字節(jié)為編碼單元,沒有字節(jié)序的問題。UTF-16以兩個(gè)字節(jié)為編碼單元,在解釋一個(gè)UTF-16文本前,首先要弄清楚每個(gè)編碼單元的字節(jié)序。例如“奎”的Unicode編碼是594E,“乙”的Unicode編碼是4E59。如果我們收到UTF-16字節(jié)流“594E”,那么這是“奎”還是“乙”?
Unicode規(guī)范中推薦的標(biāo)記字節(jié)順序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。BOM是一個(gè)有點(diǎn)小聰明的想法:
在UCS編碼中有一個(gè)叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的編碼是FEFF。而FFFE在UCS中是不存在的字符,所以不應(yīng)該出現(xiàn)在實(shí)際傳輸中。UCS規(guī)范建議我們?cè)趥鬏斪止?jié)流前,先傳輸字符"ZERO WIDTH NO-BREAK SPACE"。
這樣如果接收者收到FEFF,就表明這個(gè)字節(jié)流是Big-Endian的;如果收到FFFE,就表明這個(gè)字節(jié)流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。
UTF-8不需要BOM來表明字節(jié)順序,但可以用BOM來表明編碼方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF(讀者可以用我們前面介紹的編碼方法驗(yàn)證一下)。所以如果接收者收到以EF BB BF開頭的字節(jié)流,就知道這是UTF-8編碼了。
Windows就是使用BOM來標(biāo)記文本文件的編碼方式的。


所以,“漢”字的gbk,utf8,utf16(小端),utf16(大端),二進(jìn)制分別是

BA BA , EF BB BF E6 B1 89 ,FF FE 49 6C , FE FF 6C 49


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI