“符号”是什么意思;U+&引用;在讨论Unicode编码时?
我意识到这是非常基本的,因为我正在维基百科和任何它指向的地方阅读Unicode。但是这个“U+0000”的语义并没有完全解释清楚。在我看来,“U”总是等于0 为什么“U+”是符号的一部分?这到底是什么意思?(它似乎是某个基本值,但我无法理解它何时或为何非零。) 另外,如果我从其他来源收到一个文本字符串,我如何知道该字符串是UTF-8、UTF-16还是UTF-32编码的?有没有什么方法可以根据上下文自动确定“符号”是什么意思;U+&引用;在讨论Unicode编码时?,unicode,unicode-string,Unicode,Unicode String,我意识到这是非常基本的,因为我正在维基百科和任何它指向的地方阅读Unicode。但是这个“U+0000”的语义并没有完全解释清楚。在我看来,“U”总是等于0 为什么“U+”是符号的一部分?这到底是什么意思?(它似乎是某个基本值,但我无法理解它何时或为何非零。) 另外,如果我从其他来源收到一个文本字符串,我如何知道该字符串是UTF-8、UTF-16还是UTF-32编码的?有没有什么方法可以根据上下文自动确定 来自维基百科,文章,章节: Unicode在0到10FFFF(十六进制)范围内定义了111
ă
(拉丁文小写字母A随以短音符)为U+0103;在代码页852中有代码0xC7,在代码页1250中有代码0xE3,但当我写U+0103时,每个人都明白我指的是Unicode代码点,他们可以查找它
0xC3 0x89 0x70 0xC3 0xA9 0x65
这很可能是UTF-8编码中的Épée
。在little endian UTF-16中,这将是
0x00 0xC9 0x00 0x70 0x00 0xE9 0x00 0x65
(请注意,每个偶数字节都是零。)
谢谢,我自己也开始发现了一些,但是这个答案非常有用。所以我知道“U”并没有添加到任何东西上,它只是一个类似于十六进制之前的“
0x
”或后面的“H
”的符号(谢天谢地,这似乎是不赞成的)。它看起来就像我看到的所有东西,就文本而言,字符串是UTF-8。因此,ASCII的7位范围之外的任何字符都不会被编码为单个字节。e、 g.字符在UTF-8中绝不是0xA2
的单个字节。如果您想在UTF-8中使用,则必须将其编码为两个字节0xC2A2
。因此,对于UTF-8,没有“扩展ASCII”。这些字符中必须有两个或更多字节。@罗伯特布里斯托·约翰逊:是的,有些语言使用转义符号\u1234(可能还有\U103456)。注意:U+XXXX(和\U)被解码,因为它是字符的逻辑(和抽象)表示:它表示unicode表上的字符,而不告诉我们如何将其作为字节。相反,0xAA被编码,所以字节的物理表示形式。