如何为不同的语言分配unicode?

时间:2009-09-01 13:18:17

标签: unicode character-encoding

这对我来说似乎是最令人困惑的问题。

如何识别新角色的开头?

如何分配代码点?

我们以汉字为例。

为它们分配了多少个代码点,

为什么这样分配,任何原因?

修改: Plz用你自己的话来描述它,而不是用引用来形容它。

或者你能否推荐一本系统地讨论Unicode的书,你认为这本书已经明确了(这是最重要的)。

5 个答案:

答案 0 :(得分:5)

Unicode Consortium负责代码点分配。如果您想要分配新字符或代码页,可以在那里申请。有关示例,请参阅proposal pipeline

答案 1 :(得分:3)

Unicode规范的

Chapter 2定义了Unicode的一般结构,包括为哪种字符分配的范围。

答案 2 :(得分:2)

答案 3 :(得分:1)

UnicodeUnicode Consortium指定的标准。规范定义了Unicode的字符集Universal Character Set (UCS),以及一些编码字符的编码,Unicode Transformation Formats UTF-7UTF-8UTF-16和{{3} }。

  

如何识别新角色的开头?

这取决于已使用的编码。 UTF-16和UTF-32是具有固定码字长度(分别为16和32位)的编码,而UTF-7和UTF-8具有可变码字长度(从8位到32位),具体取决于字符点是要编码。

  

如何分配代码点?我们以汉字为例。分配给它们的代码点范围是什么,为什么分配它,无论如何?

UCS被分成所谓的UTF-32。第一个是 Basic Latin (U + 0000-U + 007F,编码为ASCII),第二个是 Latin-1 Supplement (U + 0080-U + 00FF,编码如ISO 8859-1)等。

答案 4 :(得分:0)

最好说字符编码而不是代码页

字符编码是一种将某些字符映射到某些数据的方法(反之亦然!)

正如维基百科所说:

字符编码系统由一个代码组成,该代码将给定指令表中的每个字符与其他字符配对,例如自然数字,八位字节或电脉冲序列,以便于传输数据(通常为数字)和/或文本)通过电信网络或计算机中的文本存储

最受欢迎的字符编码为 ASCII UTF-16 UTF-8

<强> ASCII

广泛用于计算机的第一个代码页。在ANSI中,只为每个字符分配一个字节。所以ANSI可能有一组非常有限的字符(英文字母,数字,......)

正如我所说,ASCII在MS-DOS等旧操作系统中使用得很好。但ASCII并没有死,仍然使用。当你有一个10个字符的txt文件,它是10个字节,你有一个ASCII文件!


<强> UTF-16

在UTF-16中,为字符分配了两个字节。所以我们在UTF-16中可以有65536个不同的字符!

Microsoft Windows在内部使用UTF-16。


<强> UTF-8

UTF-8是另一种流行的字符编码方式。它对字符使用可变长度字节(1字节到4字节)。它也与ASCII兼容,因为ASCII字符使用1byte。

大多数基于Unix的系统使用UTF-8


编程语言不依赖于代码页。也许编程语言的特定实现不支持代码页(如Turbo C ++)

您可以使用现代编程语言中的任何代码页。他们还有一些转换代码页的工具。

有不同的Unicode版本,如Utf-7,Utf-8,...你可以阅读它们here(推荐!),也许还有更正式的详细信息here