Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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
Python 2.7:unicode表示的名称_Python_Unicode_Utf 8_Unicode Escapes_Unicode Literals - Fatal编程技术网

Python 2.7:unicode表示的名称

Python 2.7:unicode表示的名称,python,unicode,utf-8,unicode-escapes,unicode-literals,Python,Unicode,Utf 8,Unicode Escapes,Unicode Literals,这些不同类型的unicode ascii表示形式的名称是什么 \xF0\x9F\x98\xA2 \U0001f622 他们所属的集合是否有一个比“表示”更具体的术语?在这些上下文中,我将如何描述非ascii表示(,正如Tom Blodget已经警告过您的,这是一个特定于python的答案 前导的\显示这是一个转义序列 \x表示接下来的两个字符将被解释为十六进制数字 \U表示接下来的八个字符将被解释为32位十六进制值 您可以在此处阅读更多有关内容: 要完全回答您的问题: \xF0\x9F

这些不同类型的unicode ascii表示形式的名称是什么

  • \xF0\x9F\x98\xA2
  • \U0001f622

他们所属的集合是否有一个比“表示”更具体的术语?在这些上下文中,我将如何描述非ascii表示(,正如Tom Blodget已经警告过您的,这是一个特定于python的答案


前导的
\
显示这是一个转义序列

\x
表示接下来的两个字符将被解释为十六进制数字

\U
表示接下来的八个字符将被解释为32位十六进制值

您可以在此处阅读更多有关内容:

要完全回答您的问题:

  • \xF0\x9F\x98\xA2
    只是四个ASCII字符,您有它们的十六进制值
  • \U0001f622
    是一个使用32位十六进制值编码的UNICODE码点

  • Python3的

    首先,似乎对十六进制转义有误解:

    print("\xF0\x9F\x98\xA2" == "\u00F0\u009F\u0098\u00A2")
    print("\xF0\x9F\x98\xA2" == "\U000000F0\U0000009F\U00000098\U000000A2")
    print("\xF0\x9F\x98\xA2" == "\U000000F0\U0000009F\U00000098\U000000A2")
    print("\xF0\x9F\x98\xA2" == "\N{LATIN SMALL LETTER ETH}\N{APPLICATION PROGRAM COMMAND}\N{START OF STRING}\N{CENT SIGN}")
    
    为了完整性(我记得在机器代码中有效地使用了八进制,其中一些指令有3位对齐的参数,但我看不出真正编程的意义):

    看起来它们都是Unicode码点转义,分别为2位十六进制、4位十六进制和8位十六进制,范围从U+0000到U+00FF、U+FFFF和U+10FFFF

    我们可以确认,与其他语言不同的是,在Python 3中,\u for表示UTF-16代码单元,它实际上是一个代码点

    print("\ud83d\ude22" == "\U0000d83d\U0000de22")
    
    为了完整性:


    打印(“\U0001f622”=="这似乎是一个特定于语言的问题,或者至少会有特定于语言的答案。此外,如果允许十六进制字节格式,则不会将字节解释为Unicode。例如,在C#中不允许。在JavaScript中,它表示ISO 8859-1中的字节,然后将其作为Unicode字符放入字符串中。第一个s也是第二个的UTF-8编码。超出范围
    \x00
    \x7f
    的十六进制值不是ASCII。这不是16位十六进制值,而是32位。技术术语是“码点”,而不是“字符”是的,我把十六进制值和十六进制数字混淆了。8个十六进制数字表示32位,你说得对,我编辑了答案。@MarkRansom你是说这个答案中的第二个项目符号应该是“
    \U0001f622
    是UNICODE代码点”?@NathanHinchey正是。对
    \u
    的处理可能取决于您使用的Python版本和内部版本。对我来说,
    u“\ud83d\ude22”==u'\U0001f622'
    在2.7上产生
    True
    ,但在3.6上产生
    False
    print("\ud83d\ude22" == "\U0000d83d\U0000de22")