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

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

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

用于编写所有世界语言的字符的数字表示的标准。 Unicode提供了一种统一的手段来存储,search和交换任何语言的文本。 它被所有的现代计算机所使用,并且是在因特网上处理文本的基础。 Unicode由Unicode联盟开发和维护。

开发人员有许多常见的,但很容易避免的编程错误,他们不愿意自学Unicode和编码。

  • 首先,请到权威的详细信息和实施准则。
  • 正如其他人所说的,乔尔·斯波斯基(Joel Spolsky)对这些错误有很好的评价。
  • 我也喜欢Elliotte Rusty Harold的Unicode十诫 。
  • 开发者还应该注意规范表示攻击。

你应该知道的一些关键概念是:

  • 字形 – 用于表示书写字符的混合graphics。
  • 组合 – 组合字形创build另一个字形。
  • 编码 – 将 Unicode点转换为字节stream。
  • 对Unicodestring进行整理 – 区分大小写的比较。

阅读Joel的绝对最低限度每个软件开发人员绝对,积极必须知道Unicode和字符集(没有借口!)

unicode.org只是增加另一个链接的风险,是一个惊人的资源。

简而言之,它是ASCII的替代品,用来处理人类曾经使用过的每一个字符。 Unicode有多种编码scheme来处理所有这些字符 – 现在或多或less是标准的UTF-8很难保留每个字符的单个字节,并且与前7个位的ASCII相同。

(作为一个附录,程序员之间存在着一个普遍的误解,那就是如果你打算进行国际化的话,你只需要知道Unicode就可以了。虽然这当然是一个用途,但并不是唯一的一个,例如,我正在开发一个这个项目只会使用英文文本 – 但是有大量的花式math符号,把整个项目移动到完全的Unicode解决了更多的问题。

Joel Spolsky的这篇文章应该会帮助你很多。

统一码是行业认可的标准,可以持续表示能够代表世界angular色系统的文本。 所有开发人员都需要了解这一点,因为全球化是一个日益严重的问题。

用于处理Unicode的一个(开放)代码源是ICU – 用于Unicode的国际化组件。 它包括用于Java的ICU4J和用于C和C ++的ICU4C(提供C接口;使用C ++编译器)。

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

因此,不用处理数十种不同的字符编码,您可以使用一种编码方式(这也使得在单个文本string中混合来自不同语言的字符变得更加容易,因为您不需要将编码切换到中间的一个文本string)。 其实还剩下足够的空间,我们远远没有使用所有的200万字符。 Unicode联盟可以很容易地为另外100种语言添加符号,甚至不用担心符号空间不足。

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

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

在这里你可以find一个很好的指南:

http://www.joelonsoftware.com/articles/Unicode.html

Unicode是一个枚举字符的标准,并为它们提供了唯一的数字ID(称为“代码点”)。 它包括一个非常大的,不断增长的大多数现代文字的字符集,还有很多奇特的东西,如古希腊音乐符号。

与其他字符编码scheme(如ASCII或ISO-8859标准)不同,Unicode没有说明以字节表示这些字符的任何内容; 它只是给字符提供一组通用的ID。 所以说Unicode是“16位ASCII代替”是错误的。

有各种编码scheme可以表示字节中的任意Unicode字符,包括UTF-8,UTF-16等。

你不需要学习unicode来使用它,这是一个复杂的规范地狱。 你只需要知道主要的问题,以及你的编程工具如何处理它。 要了解这一点,请检查Galwegian链接以及您的编程语言和ide文档。

EG:

你可以将latin-1中的任何字符转换为unicode,但是对于所有的字符不能以其他方式工作。 PHP现在让你现在有一些function(如stristr)不能用于unicode。 Python以这种方式声明unicodestring:u“Hello World”。

这是你必须知道的那种瘦身。

知道了,如果你没有一个好的理由不使用unicode,那么就使用它。

Unicode_In_5_Minutes

所有有关的Python和Unicode格式