【问题标题】:UTF-8 uses and alternativesUTF-8 用途和替代方案
【发布时间】:2010-11-29 19:09:38
【问题描述】:

在什么情况下你会推荐使用 UTF-8?是否有替代方案可以达到相同的目的?

UTF-8 正在用于 i18n?

【问题讨论】:

  • 我想知道为什么这个问题会得到-2?
  • 可能是因为第二个问题? “UTF-8 正在用于 i18n?”。不是很清楚你的意思。

标签: localization utf-8 internationalization


【解决方案1】:

由于您将此标记为网页设计,我假设您需要优化代码大小以尽可能小以快速传输文件。

UTF-8 的替代方案是其他 Unicode 编码,因为除了使用 Unicode 之外别无选择(至少对于常规计算机系统而言)。

如果您查看如何指定 UTF-8,您会发现 U+007F 之前的所有代码点都需要一个八位字节,而 U+07FF 之前的代码点需要两个八位位组,最多为 U+FFFF三个和四个八位字节的代码点高达 U+10FFFF。 对于 UTF-16,您将需要最多 U+FFFF 的两个八位字节(大多数情况下),以及最多 U+10FFFF 的四个八位位组。 对于 UTF-32,所有 unicode 点都需要四个八位字节。

换句话说,与 UTF-16 相比,位于 U+07FF 之下的脚本会从使用 UTF-8 中获得一些大小优势,而高于 07FF 的脚本会在大小上有所损失。 但是,由于该域是网页设计,因此可能值得注意的是,所有控制字符都位于 UTF-8 的一个八位字节范围内,这对于具有大量 HTML 标记和 Javascript 的文本来说不太正确,与实际“文本”的数量。

U+07FF 下的文字包括拉丁文(除了一些扩展名,如音标)、希腊文、西里尔文、希伯来文,可能还有更多。 Wikipedia 对 Unicode 问题有很好的报道,在 Unicode Consortium 你可以得到更多的细节。

【讨论】:

    【解决方案2】:

    由于您正在寻求建议,我建议您在任何情况下都使用它。一直以来,即用于 HTML 文件和文本资源。对于仅限英语的应用程序,它不会改变任何事情,但是当您需要实际本地化它时,首先使用 UTF-8 将是一个好处(您无需重新访问您的代码并对其进行更改;少一个缺陷源)。

    至于其他 Unicode 系列编码(尤其是 UTF-16),我不建议将它们用于 Web 应用程序。虽然 ie 汉字的带宽消耗实际上可能更高(至少三个字节),但您将避免传输和浏览器解释的问题(是的,我知道理论上它应该都一样,不幸的是在实践中容易破裂)。

    【讨论】:

      【解决方案3】:

      一直使用 UTF-8。 No excuses.

      【讨论】:

      • unicode 一直是我同意的,但不一定是 utf8。
      【解决方案4】:

      对拉丁语言使用 utf-8。 utf-16 适用于所有其他语言。

      【讨论】:

      • 但 UTF-16 不向后兼容 ASCII。
      • UTF-8 完美支持所有其他语言。您可能对 ISO-8859 感到困惑。唯一的区别是 UTF-16 是 4 字节宽,而 UTF-8 具有可变字节宽度(因此消耗的字节更少)。
      • @user177883,那么您应该说这是问题中的一个约束。
      • errr... utf-16 是每个字符 2 个字节。你对 utf-32 的看法
      • UTF-16 是每个 代码单元 2 个字节。一个字符可能需要 1 或 2 个 UTF-16 代码单元。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多