2010-12-16 58 views
2


我現在有點迷失在UTF-8中。
我正在尋找術語多字節安全的準確定義。請定義術語「多字節安全」

+0

字節用於表示單字節字符始終用來表示多字節字符總是8位,即,具有最顯著7位,即小於128,和字節上,即大於127那麼多字節安全的UTF-8位的是,如果字節是小於128。其它的編碼可能對多字節安全的不同的最大值。 – Matt 2016-09-23 01:35:14

回答

4

當你正在處理Unicode字符,它是不是安全地假定所有的字符,只取一個字節或CHAR(JAVA)。所以在讀取或解析字符串時,需要考慮這一點。

這是一個excellent article,它解釋了在處理Unicode w.r.t Java時的複雜性。

  1. 存儲字符會佔用的字節數不一致。 UTF-8編碼字符可能在 之間(LATIN_CAPITAL_LETTER_A)和四個 (MATHEMATICAL_FRAKTUR_CAPITAL_G) 字節之間。可變寬度編碼具有 影響讀取和 從字節數組解碼。

  2. 並非所有的代碼點都可以存儲在char中。所述 MATHEMATICAL_FRAKTUR_CAPITAL_G示例 在於對 字符補充範圍,並且不能被存儲在16位 。它必須由兩個 連續字符值表示,它們本身都不具有意義,它們都不是 。 字符類爲使用32位代碼點的 提供方法。

// Unicode code point to char array 
    char[] math_fraktur_cap_g = Character.toChars(0x1D50A);