【发布时间】:2010-11-29 19:09:38
【问题描述】:
在什么情况下你会推荐使用 UTF-8?是否有替代方案可以达到相同的目的?
UTF-8 正在用于 i18n?
【问题讨论】:
-
我想知道为什么这个问题会得到-2?
-
可能是因为第二个问题? “UTF-8 正在用于 i18n?”。不是很清楚你的意思。
标签: localization utf-8 internationalization
在什么情况下你会推荐使用 UTF-8?是否有替代方案可以达到相同的目的?
UTF-8 正在用于 i18n?
【问题讨论】:
标签: localization utf-8 internationalization
由于您将此标记为网页设计,我假设您需要优化代码大小以尽可能小以快速传输文件。
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 你可以得到更多的细节。
【讨论】:
由于您正在寻求建议,我建议您在任何情况下都使用它。一直以来,即用于 HTML 文件和文本资源。对于仅限英语的应用程序,它不会改变任何事情,但是当您需要实际本地化它时,首先使用 UTF-8 将是一个好处(您无需重新访问您的代码并对其进行更改;少一个缺陷源)。
至于其他 Unicode 系列编码(尤其是 UTF-16),我不建议将它们用于 Web 应用程序。虽然 ie 汉字的带宽消耗实际上可能更高(至少三个字节),但您将避免传输和浏览器解释的问题(是的,我知道理论上它应该都一样,不幸的是在实践中容易破裂)。
【讨论】:
一直使用 UTF-8。 No excuses.
【讨论】:
对拉丁语言使用 utf-8。 utf-16 适用于所有其他语言。
【讨论】: