0

长期以来,我一直被有关使用 Unicode 的问题所困扰。Unicode 允许加速和简化软件的开发(就全球化而言),但我担心以下因素:

  1. 增加内存和磁盘空间的使用;
  2. 降低文本处理性能;
  3. 亚洲语言一视同仁,不利于民族特色。

第一段很明显......但我不知道真实与否。有没有人面临亚洲国家软件本地化的需求,并准备分享经验?

目前我尝试使用窄配置文件的编码(cp1251 - 用于俄罗斯,cp1254 用于土耳其等)。有人会就这个问题提出建议吗?

4

4 回答 4

1
  1. 对数据大小(以字节为单位)的影响受 Unicode 编码的选择和数据类型的影响。例如,使用 UTF-8(网络上唯一有用的 Unicode 编码),英文文本的大小与 8 位编码相同,除了印刷正确的标点符号,每个可能占用两个字节;对于土耳其语文本,任何非 Ascii 字母都是 2 个字节而不是 1 个字节;对于俄语文本,任何西里尔字母都是 2 个字节。在大多数情况下,这无关紧要。
  2. 文本处理性能取决于您做什么以及如何做。合理的预期是没有值得担心的问题。如果处理速度足够快,那么使用 8 位编码是否会快 10% 就无关紧要了。
  3. Unicode 统一有其影响,但亚洲语言肯定不会一视同仁。Unicode 标准对亚洲文字和语言中字符的具体处理有很多话要说。如果您指的是不同语言中 CJK 字符的不同形状,那么通常的解决方案是使用为所用语言设计的字体。(此外,当使用 OpenType 字体时,原则上至少也可以在字体内处理。)

查看官方Unicode 常见问题解答。关于这些问题,它有很多话要说。

于 2012-11-01T07:59:01.883 回答
0

增加了文本大小,以下所有内容实际上都是不真实的。

对于 unicode 的老式编码,例如 UTF-16,它们可能是正确的。对于纯 ASCII 字符串,UTF-8 并不比 ASCII 大或慢,但它允许对每个 Unicode 代码点进行编码。UTF-8 也是当今市场上执行 Unicode 的事实上的标准。

http://www.utf8everywhere.org中对不同 Unicode 编码的性能进行了广泛的分析,包括亚洲语言。

于 2012-11-01T08:27:52.890 回答
0

前两点可以忽略不计。您需要有一个非常具体的用例,其中大小和性能的差异会产生明显的差异,从而证明混合编码令人头疼。

关于 Unihan 字符:它们按字符的含义分组,但该字符在不同的书写系统中可能略有不同。这是正确标记语言的问题,而不是真正的编码问题。在 HTML 文档中,您可以使用lang属性标记文档和/或使用 CSS 设置特定字体,这将适当地改变语言字符的外观。如何正确处理这取决于软件的类型(HTML、桌面应用程序等)。我建议您就此提出一个新的详细问题。

于 2012-11-01T07:14:34.250 回答
0
  1. 增加文字大小:是的。文本大小最多可增加 6 倍(对于 UTF-8)。但是现在的文本存储已经不是什么大问题了。

  2. 降低文本处理性能:根据我的观点,没有。一个 UTF-8 字符最多可能占用 6 个字节,但是当扫描文本时,就在 UTF-8 字符的第一个字节处,我们已经知道要读取多少字节(扫描中的当前字符) )。因此,扫描性能很可能与 O(n) 相同,其中“n”是文本的长度。为了保持最佳性能,尽量不要按索引访问文本中的字符(是的,这是性能下降点)。Java 字符串不受随机索引访问字符串字符的影响,因为 Java 字符串是一系列 2 字节字符。

  3. 亚洲语言一视同仁,不利于民族特性.

于 2012-11-01T07:14:52.363 回答