Unicode 库将utf16xx和utf32xx视为等同于utf8的对等点有多重要?

Unicode 库将utf16xx和utf32xx视为等同于utf8的对等点有多重要?,unicode,interop,Unicode,Interop,是否以ascii/utf8以外的格式进行任何显式交换?是否有大量使用utf16xx和utf32xx的字段?作为一名编写多个unicode文本库的作者,我提出了这样一个问题,与预期的实用程序相比,支持所有五个主要变体的负担相当高。Windows和Java在内部都将unicode视为UTF-16,Python根据平台的不同使用UTF-16或UTF-32。因此,不仅仅是UTF-8对这些是重要的。这些只是我最熟悉的案例,我相信还有其他案例 因此,在我看来,如果你有一个Unicode库,你应该支持UTF-

是否以ascii/utf8以外的格式进行任何显式交换?是否有大量使用utf16xx和utf32xx的字段?作为一名编写多个unicode文本库的作者,我提出了这样一个问题,与预期的实用程序相比,支持所有五个主要变体的负担相当高。

Windows和Java在内部都将unicode视为UTF-16,Python根据平台的不同使用UTF-16或UTF-32。因此,不仅仅是UTF-8对这些是重要的。这些只是我最熟悉的案例,我相信还有其他案例


因此,在我看来,如果你有一个Unicode库,你应该支持UTF-16和UTF-32。(我不敢相信UTF-32太难了,因为除了字节排序之外没有特殊处理。尽管我不是Unicode库的作者:)

说到交换,我想你是对的,UTF-8很流行。使用UTF-16的一些情况是各种二进制协议,如DCOM、JavaRMI和(可能是???)CORBA


至于UTF-32,我从来没有听说过它用于交换的情况。

一个重要的观点是XML:它可以采用几乎任何可以想象的编码,但UTF-8是目前为止最常见的

但是

所有XML处理器都必须接受Unicode的UTF-8和UTF-16编码


因此,如果您的应用程序/库以任何方式处理XML,它必须至少在该部分支持UTF-16。请注意,在这里,一个将数据转换为UTF-8进行处理的一致性解析器就足够了。

UTF-16在Windows上是Unicode。他们没有使用UTF-8,因为它在Windows使用Unicode时还没有发明!!UTF-32很少使用。@David:但是,在处理字符时,您必须将UTF-8/16解码为UTF-32,以便正确处理代码点,即使您是基于每个代码点而不是基于每个字符串进行解码。我想是C库吧?为了什么目的,在什么平台上?交换的具体内容是什么?艾比斯?二进制文件?标记语言?我知道utf16和utf32在内部被广泛使用,但我主要对互操作感兴趣。是否有任何重要的工具/平台生产utf16xx和utf32xx用于交换?windows上的utf16。我从未在野外遇到过utf32。正如David Heffernan所说,如果您使用的是Windows API,那么您需要能够使用UTF-16。对于交换,您通常可以选择以UTF-16保存内容,但我从未使用过它——对于欧洲字母表,它没有优势。然而,它可能对亚洲语言有利。