您在数据库或服务器上存储了许多以UTF-16格式存储的XML文件,而空间不是问题.您需要将大部分这些文件作为XML文件传递到其他系统,因此尽可能少地使用空间至关重要.
问题
实际上,只有大约10%的以UTF-16存储的文件需要存储为UTF-16,其余的可以安全地存储为UTF-8并且没问题.如果我们可以使那些需要UTF-16的那些,并且其余的是UTF-8,我们可以在文件系统上使用大约40%的空间.
我们试图对数据进行很好的压缩,这很有用,但我们发现我们得到的UTF-8压缩比与UTF-16相同,UTF-8压缩也更快.因此,最终如果尽可能多的数据存储为UTF-8,我们不仅可以在存储解压缩时节省空间,即使压缩也可以节省更多空间,我们甚至可以节省压缩本身的时间.
目标
要弄清楚XML文件中何时需要UTF-16的Unicode字符,所以我们只能在必要时使用UTF-16.
关于XML文件和数据的一些细节
虽然我们控制XML本身的模式,但是我们不能控制从Unicode角度看哪些类型的“字符串”,因为源可以自由地提供要使用的Unicode数据.然而,这种情况很少见,所以我们不希望每次只使用UTF-16来支持只需要10%时间的东西.
发展环境
我们在.Net Framework 4.0中使用C#.
编辑:解决方案
解决方案就是使用UTF-8.
这个问题是基于我对UTF的误解,我感谢所有帮助我的人.谢谢!
解决方法
UTF-8要求所有符号在U07FF或以下的每个字符不超过2个字节,对于扩展ASCII代码页中的任何字符都要一个字节;这意味着对于使用拉丁语,希腊语,西里尔语,希伯来语或阿拉伯语字母表的现代语言中的任何文档,UTF-8的大小(可能小得多)至少等于UTF-16,包括大多数常见符号用于代数和IPA.这就是所谓的基础多语言平面,涵盖亚洲以外所有官方语言的90%以上.
UTF-16作为一般规则,将为您提供较小的文件,主要用于以天城文(印地语),日文,中文或韩文(韩文)字母或任何古代或“深奥”字母(切诺基或因纽特人)编写的文件. ?),并且在大量使用专业数学,科学,工程或游戏符号的文档中可能更小.如果您使用的XML是针对印度,中国和日本的本地化文件,您可以使用UTF-16获得更小的文件大小,但是您必须使您的程序足够智能,以便知道本地化文件是以这种方式编码的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。