加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何确定“最低”编码可能?

发布时间:2020-12-15 20:02:04 所属栏目:百科 来源:网络整理
导读:脚本 您在数据库或服务器上存储了许多以UTF-16格式存储的XML文件,而空间不是问题.您需要将大部分这些文件作为XML文件传递到其他系统,因此尽可能少地使用空间至关重要. 问题 实际上,只有大约10%的以UTF-16存储的文件需要存储为UTF-16,其余的可以安全地存储为
脚本

您在数据库或服务器上存储了许多以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编码所有内容. UTF-8可以处理任何UTF-16,并且在XML文档的情况下几乎肯定会更小. UTF-8大于UTF-16的唯一情况是,如果文件主要由BMP之外的字符组成,并且在最好的情况下(ASCII-spec,其中包括您可以在标准美国上键入的每个字符) 104键)UTF-8文件的大小是UTF-16的一半.

UTF-8要求所有符号在U07FF或以下的每个字符不超过2个字节,对于扩展ASCII代码页中的任何字符都要一个字节;这意味着对于使用拉丁语,希腊语,西里尔语,希伯来语或阿拉伯语字母表的现代语言中的任何文档,UTF-8的大小(可能小得多)至少等于UTF-16,包括大多数常见符号用于代数和IPA.这就是所谓的基础多语言平面,涵盖亚洲以外所有官方语言的90%以上.

UTF-16作为一般规则,将为您提供较小的文件,主要用于以天城文(印地语),日文,中文或韩文(韩文)字母或任何古代或“深奥”字母(切诺基或因纽特人)编写的文件. ?),并且在大量使用专业数学,科学,工程或游戏符号的文档中可能更小.如果您使用的XML是针对印度,中国和日本的本地化文件,您可以使用UTF-16获得更小的文件大小,但是您必须使您的程序足够智能,以便知道本地化文件是以这种方式编码的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读