代码之家  ›  专栏  ›  技术社区  ›  DarthVader

UTF-8的用途和替代方案

  •  0
  • DarthVader  · 技术社区  · 15 年前

    在什么情况下你会推荐使用UTF-8?是否有其他方法可以达到同样的目的?

    UTF-8用于I18N?

    4 回复  |  直到 15 年前
        1
  •  2
  •   Christoffer    15 年前

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

    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时会有一定的大小优势,而UTF-16以上的脚本则会有一定的大小损失。 但是,由于域是Web设计,因此可能值得注意的是,所有控制字符都在一个八位字节的utf-8范围内,这使得有大量HTML标记和javascript的文本与实际的“文本”数量相比不那么真实。

    U+07FF下的脚本包括拉丁语(除了一些扩展名,如音调标记)、希腊语、西里尔文、希伯来语和其他一些。维基百科在Unicode问题和 Unicode Consortium 你可以得到更多的细节。

        2
  •  1
  •   Paweł Dyda    15 年前

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

    至于其他Unicode系列编码(特别是UTF-16),我不建议在Web应用程序中使用它们。虽然对于汉字来说带宽消耗可能会更高(每次至少三个字节),但您可以避免传输和浏览器解释方面的问题(是的,我知道理论上它应该都是一样的,不幸的是在实践中它往往会断开)。

        3
  •  0
  •   BalusC    15 年前

    一路使用UTF-8。 No excuses .

        4
  •  -5
  •   dan_waterworth    15 年前

    拉丁语使用UTF-8。所有其他语言都使用UTF-16。

    推荐文章