2012-05-30 84 views

回答

1

兩個.NETJavaScript使用UTF-16。 UTF-16是所謂的可變長度編碼,其使用16位碼單元來表示Unicode碼碼點(它們是21位長)。從歷史上看,當Unicode仍然是一個16位代碼時(後來認爲不足,因此擴展到21位),它來自UCS-2

由於UTF-16採用16位代碼,單位代碼,本身是一個16位代碼,而是代表一個字符,你必須更關注一些什麼你實際上意味着:

  1. 在Unicode的意識,就是Unicode代碼點這可能是你的本意。這裏有兩種情況:

    1. 在範圍A碼點  U + 0000至  U + FFFF佔用兩個字節,因爲它可以在一個單一的UTF-16代碼單元來表示(在此代碼單元和代碼點是相同的)。
    2. 範圍爲U + 10000至U + 10FFFF的代碼點佔用4個字節,因爲它必須使用兩個 UTF-16代碼單元表示。
  2. 字的通常含義往往是指字形,實際上,這將是我們所認爲的單個字符。這些可以具有任意多個變音符,或者可以是由渲染引擎由多個代碼點形成的連字。長話短說在這種情況下:這些可以是任意長的,因爲它們可以由幾個代碼點組成。

1

.NET和JavaScript都是UTF-16:

表示每種Unicode代碼點爲一個或兩個16位整數 的序列。雖然Unicode補充字符(U + 10000和更大) 需要兩個UTF-16替代碼點,但最常見的Unicode字符只需要一個UTF-16碼 點。支持big-endian和 big-endian字節順序。

因此它可以是16位或32位。

+1

兩者都不是16位。兩者都使用UTF-16(帶有一些JavaScript特性),儘管這是一種可變長度編碼,但它的名字仍然存在。 –

+0

UTF-16表示16位Unicode Unicode,不是嗎? – Damith

+1

UTF-16意味着它使用16位*代碼單元*來表示Unicode的21位*代碼點*。所以你需要一個或兩個這樣的代碼單元用於單個代碼點,這取決於代碼點。 – Joey

相關問題