Utf 8 ICU需要中间UTF16转换步骤
为什么Utf 8 ICU需要中间UTF16转换步骤,utf-8,icu,Utf 8,Icu,为什么libicu使用utf16作为“公分母”格式而不是utf8?我需要从utf8转换到utf32,然后再转换回来,libicu需要这两个步骤utf8->utf16->utf32转换,这似乎使转换变得不必要的困难,尽管它本身的功能,如u tolower也需要UChar32输入 内存似乎不是这里的决定因素,否则他们也可以使用utf8作为其“基本”格式。UTF-16是Unicode标准的默认编码形式,因此我怀疑这回答了其中的“为什么”。有关更多信息,请参阅。所有UTF都可以直接相互转换,而不会丢失数
libicu
使用utf16
作为“公分母”格式而不是utf8
?我需要从utf8
转换到utf32
,然后再转换回来,libicu
需要这两个步骤utf8->utf16->utf32
转换,这似乎使转换变得不必要的困难,尽管它本身的功能,如u tolower
也需要UChar32
输入
内存似乎不是这里的决定因素,否则他们也可以使用
utf8
作为其“基本”格式。UTF-16是Unicode标准的默认编码形式,因此我怀疑这回答了其中的“为什么”。有关更多信息,请参阅。所有UTF都可以直接相互转换,而不会丢失数据,但将一个字符集转换为另一个字符集需要通过Unicode进行两步转换,UTF-16比UTF-8更易于使用,大多数平台在内存中使用UTF-16进行Unicode字符串处理,而UTF-8更多地用于存储和通信(*Nix是一个例外,因为它也喜欢在内存中使用UTF-8)。因此,他们可能只是在转换UTF-8->UTF-32
时保持了与转换CharsetX->CharsetY
相同的处理模型,以实现一致性,而无需尽可能优化。您可以使用ucnv_from algorithmic
和ucnv_to algorithmic
来提高效率。链接: