鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 像是:靠?? 之類的一些特殊字,以編碼的角度,該如何理解?

像是:靠?? 之類的一些特殊字,以編碼的角度,該如何理解?

最近在網(wǎng)路上看到一些奇怪的中文字,例如:

?試??試??你??的??眼??力?? 請找??到??一??帆??風(fēng)順靠??靠??靠??

我試著將 靠?? 這個字找了線上的轉(zhuǎn)換器 轉(zhuǎn)成 utf-8
utf-8 顯示結(jié)果如下

\xe9\x9d\xa0\xe0\xbd\xbc\xe0\xbc\xb5


其中 \x 的部分 我當(dāng)作是 utf-8 的表達,但我查不到這是哪裡的規(guī)范?
其中 e9 9d a0 ... 我認為是 16 進制的表示,e9 將會佔 1 個 字節(jié)(byte) 的大小
查看 utf-8 定義后發(fā)現(xiàn) :
通常1個字節(jié)可以存入一個ASCII碼,2個字節(jié)可以存放一個漢字國標(biāo)碼。 
也就是說 上面的這個字 用到了 e9 9d a0 e0 bd bc e0 bc b5 共 9 個字節(jié)(byte),應(yīng)該不屬於中文字。

請問這樣我能知道它這個字,是屬于哪一國語言嗎? 或者是在 utf-8 的定義中,這個字在哪個范圍內(nèi)呢?

回答
編輯回答
失心人
2018年8月8日 12:32
編輯回答
祈歡

首先回答問題本身:
“靠??”這不是一個整體的漢字,而是一個普通的漢字“靠”和緊隨其后兩個特殊字符??的組合。(復(fù)制到記事本等只支持純文本的編輯器里你就可以明顯發(fā)現(xiàn)這一點)

兩個特殊字符我也不清楚是什么,想知道詳細可以去查對應(yīng)編碼范圍區(qū)域。
猜測是一些修飾字符,某些外語里需要用到。


其次糾正問題本身一個錯誤:

查看 utf-8 定義后發(fā)現(xiàn) : 通常1個字節(jié)可以存入一個ASCII碼,2個字節(jié)可以存放一個漢字國標(biāo)碼。
也就是說 上面的這個字 用到了
e9 9d a0 e0 bd bc e0 bc b5 共 9 個字節(jié)(byte),應(yīng)該不屬於中文字。

utf-8是unicode的一種編碼方式,而漢字國標(biāo)碼是GB系列的編碼(GB2312、GBK、GB18030等)。
這兩者是兩種東西,不會有所說的“查看utf-8定義……存放一個漢字國標(biāo)碼”的情況。2個字節(jié)放一個漢字的說法也不準(zhǔn)確。

原始的unicode碼,所有字符都是2個字節(jié),包括漢字。
utf-8中,所有字符長度不定(1-4個字節(jié)),一個漢字用3個字節(jié)。
國標(biāo)碼的GB2312和GBK中,所有字符都是2個字節(jié),包括漢字。
國標(biāo)碼的GB18030中,每個字符是1/2/4個字節(jié)

2017年2月18日 13:03
編輯回答
別傷我
Unicode符號范圍(十六進制) UTF-8編碼方式(二進制)
0000 0000 - 0000 007F 0xxxxxxx
0000 0080 - 0000 07FF 110xxxxx 10xxxxxx
0000 0800 - 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000 - 0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

取 Unicode 轉(zhuǎn)二進制代入 UTF-8 xxx 部分

'靠'
// Unicode: '\u9760'                     --- '1001 0111 0110 0000'
// UTF-8:   '11101001 10011101 10100000' --- '\xe9\x9d\xa0'

'天上飛的那個打不出來'
// Unicode: '\u0f7c'                     --- '0000 1111 0111 1100'
// UTF-8:   '11100000 10111101 10111100' --- '\xe0\xbd\xbc'


'地上爬的那個也打不出來'
// Unicode: '\u0f35'                     --- '0000 1111 0011 0101'
// UTF-8:   '11100000 10111100 10110101' --- '\xe0\xbc\xb5'
2018年6月9日 06:23