Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“符号”是什么意思;U+&引用;在讨论Unicode编码时?_Unicode_Unicode String - Fatal编程技术网

“符号”是什么意思;U+&引用;在讨论Unicode编码时?

“符号”是什么意思;U+&引用;在讨论Unicode编码时?,unicode,unicode-string,Unicode,Unicode String,我意识到这是非常基本的,因为我正在维基百科和任何它指向的地方阅读Unicode。但是这个“U+0000”的语义并没有完全解释清楚。在我看来,“U”总是等于0 为什么“U+”是符号的一部分?这到底是什么意思?(它似乎是某个基本值,但我无法理解它何时或为何非零。) 另外,如果我从其他来源收到一个文本字符串,我如何知道该字符串是UTF-8、UTF-16还是UTF-32编码的?有没有什么方法可以根据上下文自动确定 来自维基百科,文章,章节: Unicode在0到10FFFF(十六进制)范围内定义了111

我意识到这是非常基本的,因为我正在维基百科和任何它指向的地方阅读Unicode。但是这个“U+0000”的语义并没有完全解释清楚。在我看来,“U”总是等于0

为什么“U+”是符号的一部分?这到底是什么意思?(它似乎是某个基本值,但我无法理解它何时或为何非零。)

另外,如果我从其他来源收到一个文本字符串,我如何知道该字符串是UTF-8、UTF-16还是UTF-32编码的?有没有什么方法可以根据上下文自动确定

  • 来自维基百科,文章,章节:

    Unicode在0到10FFFF(十六进制)范围内定义了1114112个代码点的代码空间。通常,Unicode代码点是通过写“U+”后跟其十六进制数来表示的。对于基本多语言平面(BMP)中的代码点,使用四位数字(例如,U+0058表示字符拉丁大写字母X);对于BMP之外的代码点,使用五位或六位数字

    引入此约定是为了让读者理解,代码点特别是Unicode代码点。例如,字母
    ă
    (拉丁文小写字母A随以短音符)为U+0103;在代码页852中有代码0xC7,在代码页1250中有代码0xE3,但当我写U+0103时,每个人都明白我指的是Unicode代码点,他们可以查找它

  • 对于使用拉丁字母表编写的语言,UTF-16和UTF-32字符串很可能包含很多值为0的字节,这些字节不应该出现在UTF-8编码的字符串中。通过查看哪些字节为零,您还可以推断UTF-16和UTF-32字符串的字节顺序,即使在没有字符的情况下也是如此

    例如,如果你得到字节数

     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被编码,所以字节的物理表示形式。