关于Unicode,我需要知道什么?

关于Unicode,我需要知道什么?,unicode,internationalization,Unicode,Internationalization,作为一名应用程序开发人员,我需要了解Unicode吗?Unicode是业界公认的标准,用于一致地表示能够表示世界字符系统的文本。所有开发人员都需要了解它,因为全球化是一个越来越受关注的问题 冒着增加另一个链接的风险,这是一个惊人的资源 简而言之,它是ASCII的替代品,ASCII的设计目的是从字面上处理人类使用过的每个字符。Unicode有各种编码方案来处理所有这些字符——UTF-8,这或多或少是当今的标准,很难保持每个字符只有一个字节,前7位与ASCII相同 (作为补充,程序员中有一个普遍的误

作为一名应用程序开发人员,我需要了解Unicode吗?

Unicode是业界公认的标准,用于一致地表示能够表示世界字符系统的文本。所有开发人员都需要了解它,因为全球化是一个越来越受关注的问题

冒着增加另一个链接的风险,这是一个惊人的资源

简而言之,它是ASCII的替代品,ASCII的设计目的是从字面上处理人类使用过的每个字符。Unicode有各种编码方案来处理所有这些字符——UTF-8,这或多或少是当今的标准,很难保持每个字符只有一个字节,前7位与ASCII相同


(作为补充,程序员中有一个普遍的误解,即如果要进行国际化,只需要了解Unicode。虽然这肯定是一个用途,但它不是唯一的用途。例如,我正在从事一个项目,该项目将只使用英文文本,但有大量奇特的数学符号。t“完全使用Unicode”的整个项目解决了我无法计数的问题。)

Unicode是一个标准,它为书面通信中使用的字形定义数字代码。或者,正如他们自己所说:

数字电视标准 所用字符的表示法 写下世界上所有的 Unicode提供了统一的 存储、搜索和存储的方法 用任何语言交换文本。它 被所有现代计算机使用,并且 文本处理基础 Unicode的开发和应用 由Unicode联盟维护

有许多常见但容易避免的编程错误是由开发人员犯下的,这些开发人员不必对自己进行Unicode及其编码方面的培训

  • 首先,去看电影 权威的、详细的信息 和实施准则
  • 正如其他人提到的,Joel Spolsky 有这些吗 错误
  • 我也喜欢Elliotte Rusty Harold的
  • 开发人员还应该注意 攻击
您应该了解的一些关键概念包括:

  • -用于表示书写字符的具体图形
  • -组合图示符以创建另一个图示符
  • -将Unicode点转换为字节流
  • -Unicode字符串的区域设置敏感比较

Unicode是一种枚举字符的标准,并为字符提供唯一的数字ID(称为“代码点”)。它包括一组非常庞大且不断增长的字符,适用于大多数现代书面语言,还包括许多奇异的东西,如古希腊记谱法

与其他字符编码方案(如ASCII或ISO-8859标准)不同,Unicode没有说明用字节表示这些字符;它只是为字符提供了一组通用的ID。因此,说Unicode是“ASCII的16位替代品”是错误的


有多种编码方案可以以字节表示任意Unicode字符,包括UTF-8、UTF-16等。

Unicode是一种字符集,而非ASCII(仅包含英文字母,127个字符,其中三分之一实际上是不可打印的控制字符)包含大约200万个字符,包括所有已知语言(汉语、俄语、希腊语、阿拉伯语等)的字符,以及一些您可能从未听说过的语言(甚至有许多已死亡的语言符号不再使用,但对存档古文献很有用)

而不是处理几十个不同的字符编码,你有一个编码所有的(这也使得它更容易混合字符从不同的语言在一个单一的文本字符串,因为你不需要切换编码的某处在一个文本字符串中间)。实际上,还有很多空间,我们还远远没有使用所有200万个字符;Unicode联盟可以轻松地为另外100种语言添加符号,而不用担心符号空间耗尽

今天,你在图书馆里能找到的几乎任何语言的书都可以用Unicode表示。Unicode是编码本身的名称,如何表示为“字节”是另一个问题。有几种方法可以编写Unicode字符,如UTF-8(一到六个字节代表一个字符,取决于字符数,英语几乎总是一个字节,其他罗马语言可能是两个或三个,中文/日语可能更多),UTF-16(大多数字符是两个字节,一些很少使用的字符是四个字节)还有UTF-32,每个字符是四个字节。还有其他的,但这些是主要的


Unicode是许多较新操作系统(在Mac OS X中,几乎任何东西都是Unicode)和编程语言的默认编码(Java使用Unicode作为默认编码,通常是UTF-16,我听说Python也使用,并且将使用或已经使用UTF-32)如果你曾经计划编写一个应用程序,它应该显示、存储或处理除了纯英文文本之外的任何东西,你最好习惯Unicode,越快越好。

< P>一个(开放的)处理Unicode的代码源是Unicode的国际化组件。它包括java的ICU4J和C和C++的ICU4C。(C接口;使用C++编译器)。

< P>你不需要学习Unicode来使用它,这是一个复杂的规范。你只需要知道主要的问题和你的编程工具如何处理它。要了解这一点,请检查GalWig的链接和编程语言和IDE文档。 例如:

您可以将任何字符从拉丁语-1转换为unicode,但并非所有字符都可以转换为unicode。 PHP让您知道某些函数(如stristr)不能与unicode一起使用。 Python以这种方式声明unicode字符串:u“Hello World”

那是你必须知道的那种瘦

知道这一点,如果你没有一个好的理由