2017-03-29 76 views
1

爲什麼libicu使用utf16,因爲它是「公分母」格式而不是utf8?我需要從utf8轉換爲utf32,然後回到libicu似乎使它變得不必要地困難,因爲要求這2步utf8->utf16->utf32轉換,儘管它自己的功能如u_tolower也需要UChar32輸入。ICU需要中間UTF16轉換步驟

這似乎並不是記憶力的決定因素,否則他們也可以用utf8作爲他們的「基礎」格式。

+0

所有UTF可以直接轉換爲彼此而不會丟失數據,但是將一個字符集轉換爲另一個字符集需要通過Unicode進行兩步轉換,而UTF-16比UTF-8更易於使用,並且大多數平臺都使用UTF -16用於存儲器中的Unicode字符串處理,而UTF-8更多地用於存儲和通信(* Nix是一個例外,因爲它也喜歡在內存中使用UTF-8)。因此,他們可能只是保留相同的處理模型來轉換'UTF-8 - > UTF-32',就像它們爲了一致性轉換'CharsetX - > CharsetY'一樣,而不會在可能的情況下進行優化。 –

回答

0

UTF-16是Unicode標準的默認編碼形式,所以我懷疑那裏的答案是「爲什麼」。有關其他信息,請參閱this ICU page