设想
您有很多 XML 文件以 UTF-16 格式存储在数据库或空间不成问题的服务器上。您需要将大部分需要获取到其他系统的文件作为 XML 文件使用,并且尽可能少地使用空间是至关重要的。
问题
实际上,以 UTF-16 格式存储的文件中只有大约 10% 需要以 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% 的时间需要的东西。
开发环境
我们将 C# 与 .Net Framework 4.0 一起使用。
编辑:解决方案
解决方案就是使用 UTF-8。
这个问题是基于我对 UTF 的误解,我感谢大家帮助我解决问题。谢谢!