2017-05-29 146 views
-3

編輯UTF16如何編碼字符?

因爲看來我不會得到一般問題的答案。我將其限制爲一個細節:我對以下內容的理解是否正確?

即替代物的工作如下:

  1. 如果第一字節對是D800和DBFF之間不 - 有 不會有第二對。
  2. 如果它在D800和DBFF之間 - a)會有第二對b) 第二對將在DC00和DFFF的範圍內。
  3. 沒有單個對的UTF16字符,其值介於D800 和DBFF之間。
  4. 沒有單個對的UTF16字符,其值在DC00 和DFFF之間。

這是正確的嗎?

原來的問題

我試着閱讀有關UTF-16,但我似乎無法理解。什麼是「飛機」和「代理人」等?第一個字節的前5位是「平面」嗎?如果是這樣,那麼爲什麼不是32架飛機,因爲我們正在使用這5位?什麼是代理?它們對應哪些位?

我明白,UTF16是一種編碼Unicode字符的方法,它有時使用16位編碼字符,有時甚至32位,不多不少。 I 假定存在前2個字節(其中最重要的那個?)的值的一些列表,其指示第二個2字節將存在。

但不是我繼續關於我不知道明白,也許有人可以在這個命令?

+0

@downvoters還需要幫忙嗎? – ispiro

+0

我懷疑他們是因爲「[沒有顯示任何研究工作](https://meta.stackexchange.com/a/223482)」。你有關於[UTF-16常見問題](http://unicode.org/faq/utf_bom.html#UTF16)的問題嗎? –

+0

@TomBlodget謝謝。我不知道我應該如何顯示這些努力。在我閱讀過的文章中加入鏈接(並且不理解)?這將如何幫助這個問題?但無論如何,你可能是對的,這就是爲什麼它被低估了。我現在正在閱讀您提供給我的鏈接。謝謝。 – ispiro

回答

1

全是四。

爲了澄清,UTF-16中的術語「pair」指的是兩個UTF-16代碼單元,第一個在D800-DBFF範圍內,第二個在DC00-DFFF中。

代碼單元是16位(2字節),通常寫成十六進制(0x000A)的無符號整數。字節順序(0x00 0x0A或0x0A 0x00)由作者指定,或在文件或數據流的開頭用BOM(0xFEFF)表示。 (BOM使用與文本相同的算法進行編碼,但不是文本的一部分,一旦確定了字節順序並將字節重新排序爲系統的本地順序,通常會丟棄它。)

+1

我只想驗證你是否明白,當我在4個問題中編寫「pair」時,我的意思是一對字節。 「單對」意味着由2個字節表示的字符(而不是4個)。 – ispiro

+0

並感謝您的全力幫助。如果沒有你的幫助,我甚至不能提出修改後的問題。特別是[這個UTF16 FAQ鏈接](http://unicode.org/faq/utf_bom.html#UTF16)。 – ispiro