这对我来说似乎是最令人困惑的问题。
如何识别新角色的开头?
如何分配代码点?
我们以汉字为例。
为它们分配了多少个代码点,
为什么这样分配,任何原因?
修改: Plz用你自己的话来描述它,而不是用引用来形容它。
或者你能否推荐一本系统地讨论Unicode的书,你认为这本书已经明确了(这是最重要的)。
答案 0 :(得分:5)
Unicode Consortium负责代码点分配。如果您想要分配新字符或代码页,可以在那里申请。有关示例,请参阅proposal pipeline。
答案 1 :(得分:3)
Chapter 2定义了Unicode的一般结构,包括为哪种字符分配的范围。
答案 2 :(得分:2)
在这里查看可能有用的Unicode概述:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses)
答案 3 :(得分:1)
Unicode是Unicode Consortium指定的标准。规范定义了Unicode的字符集Universal Character Set (UCS),以及一些编码字符的编码,Unicode Transformation Formats UTF-7,UTF-8,UTF-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