1
爲什麼libicu
使用utf16
,因爲它是「公分母」格式而不是utf8
?我需要從utf8
轉換爲utf32
,然後回到libicu
似乎使它變得不必要地困難,因爲要求這2步utf8->utf16->utf32
轉換,儘管它自己的功能如u_tolower
也需要UChar32
輸入。ICU需要中間UTF16轉換步驟
這似乎並不是記憶力的決定因素,否則他們也可以用utf8
作爲他們的「基礎」格式。
所有UTF可以直接轉換爲彼此而不會丟失數據,但是將一個字符集轉換爲另一個字符集需要通過Unicode進行兩步轉換,而UTF-16比UTF-8更易於使用,並且大多數平臺都使用UTF -16用於存儲器中的Unicode字符串處理,而UTF-8更多地用於存儲和通信(* Nix是一個例外,因爲它也喜歡在內存中使用UTF-8)。因此,他們可能只是保留相同的處理模型來轉換'UTF-8 - > UTF-32',就像它們爲了一致性轉換'CharsetX - > CharsetY'一樣,而不會在可能的情況下進行優化。 –