gpt4 book ai didi

c# - 如何判断 "Lowest"编码可能?

转载 作者:行者123 更新时间:2023-11-30 13:09:16 26 4
gpt4 key购买 nike

场景

您有许多 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 的误解,我感谢大家帮助我弄清楚。谢谢!

最佳答案

编辑:我没有意识到您的问题暗示您认为存在不能安全编码为 UTF-8 的 Unicode 字符串。不是这种情况。以下答案假设您真正的意思是一些字符串会像 UTF-8 一样更长(占用更多存储空间)。


我会说甚至不到 10% 的文件需要存储为 UTF-16。即使您的 XML 包含大量的中文、日文、韩文或其他 UTF-8 比 UTF-16 更大的语言,如果该语言的文本多于 XML 语法,这仍然只是一个问题。

因此,我最初的直觉是“使用 UTF-8 直到出现问题”。这也有助于保持一致性。

如果您有充分的理由相信大部分 XML 将是东亚语言,那么您才需要担心。在那种情况下,我会应用一个简单的启发式方法,比如……遍历 XML 并计算大于 U+0800 的字符数(在 UTF-8 中是三个字节),并且仅当它大于小于 U+0080 的字符(在 UTF-8 中是一个字节),使用 UTF-16。

关于c# - 如何判断 "Lowest"编码可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com