1
6
用UTF-8编码所有东西。UTF-8可以处理UTF-16所能处理的任何事情,而且几乎可以肯定,对于XML文档来说,它会更小。UTF-8比UTF-16大的唯一情况是,如果文件主要由BMP以外的字符组成,并且在最佳情况下(ASCII规范,包括您可以在标准U.S.104键上键入的所有字符),UTF-8文件的大小将是UTF-16的一半。 UTF-8对于序号为或低于U07FF的所有符号,每个字符需要2个字节或更少,对于扩展ASCII码页中的任何字符需要1个字节;这意味着对于使用拉丁、希腊、西里尔、希伯来或阿拉伯语字母的现代语言中的任何文档,UTF-8的大小至少等于UTF-16(可能要小得多),包括代数和IPA中使用的大多数常用符号。这就是所谓的基础多语种平面,涵盖了亚洲以外90%以上的官方国家语言。 一般来说,UTF-16将为您提供一个较小的文件,用于主要使用天成文书(印地语)、日语、汉语或朝鲜文(韩语)字母或任何古老或“深奥”字母(切罗基语或因纽特人?)编写的文档,如果文档大量使用专门的数学、科学、工程或游戏符号,则可能更小。如果您使用的XML是针对印度、中国和日本的本地化文件,那么使用UTF-16可能会得到较小的文件大小,但是您必须使您的程序足够聪明,以便知道本地化文件是这样编码的。 |
2
7
不能 被安全地编码为UTF-8。事实并非如此。下面的答案假设 这意味着一些字符串将只是更长(需要更多的存储空间)作为UTF-8。
因此,我最初的直觉是使用UTF-8直到它成为一个问题。这也有助于保持一致性。 如果您有充分的理由相信XML的很大一部分将是东亚的,那么您只需要担心它。在这种情况下,我会应用一个简单的启发式方法,比如。。。浏览XML并计算大于U+0800的字符数(在UTF-8中是三个字节),只有当大于小于U+0080的字符数(在UTF-8中是一个字节)时,才使用UTF-16。 |
3
5
你永远不需要使用UTF-16而不是UTF-8,选择也不是为了“安全”。两种编码都具有相同的可编码字符库。 |
4
4
没有一个文件 必须是UTF-16
|
5
1
没有需要UTF-16而不是UTF-8的字符。UTF-8和UTF-16(就这点而言,UTF-32以及其他一些不推荐的格式)都可以对整个UCS进行编码(这就是UTF的含义)。 有些流在UTF-16中比在UTF-8中小。然而,在实践中,这样的流将很大程度上包含亚洲象形文字是非常简洁的语言。但是,XML需要0x20-0x7F范围内的一些字符,这些字符具有特定的含义,并且经常使用基于字母的脚本作为元素和属性名。 由于上述这些表意字符的简洁性,XML标记(包括元素和属性名以及小于和大于)与人类悲剧文本的比率将远高于使用字母和音节的语言。出于这个原因,即使在UTF-16中的纯文本明显小于UTF-8中的相同文本的情况下,当涉及到XML时,这种差异将更小,或者UTF-8仍然更小。 通常,使用UTF-8进行传输和存储。
|