3
來自文檔;在ICU UnicodeString中countChar32()和length()之間有什麼區別?
長度是UChar代碼單元在UnicodeString中的數量。如果你想要代碼點的數量,請使用countChar32()。在字符串的長度UCHAR代碼單元
和
計數的Unicode碼點。
代碼點可能佔用一個或兩個UChar代碼單元。計算代碼點涉及讀取所有代碼單元。
由此我傾向於認爲代碼點是一個實際的字符,代碼單元只是一個字符的一個可能的部分。
例如。
假設有一個Unicode字符串等:
「foobar的」
長度和countChar32將6.然後說你有一個的6個字符的是採取完整的32位來編碼組成的字符串長度將爲12,但countChar32將爲6.
這是正確的嗎?
是的,這是完全正確的:一個代碼單元可能只是代碼點的一部分。 UTF-8和UTF-16都是可變寬度編碼。不同的是,一個使用8位代碼單元,另一個使用16位代碼單元。通常你需要的是代碼點的數量,而不是代碼單元。那麼這不是真的:你可能希望字形的數量(用戶感知的「字符」)甚至是「列印」,但這些是高階概念。記住refrain:'int'是新的'char'。 :) – tchrist 2011-04-12 00:48:03