Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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中unicode和str方法的noob查询_Python_Unicode - Fatal编程技术网

Python中unicode和str方法的noob查询

Python中unicode和str方法的noob查询,python,unicode,Python,Unicode,我希望对Python中的Unicode和str方法进行一些澄清。在阅读了一些关于Unicode的文章后,我仍然有一些疑问,希望大家能在以下方面帮助我: 我说的对吗?当声明unicode字符串时,例如word=u'foo',python使用终端的编码,在例如UTF-8中解码foo,并在unicode中分配word十六进制表示 那么,一般来说,打印文件中的字符的过程是否总是在显示映射的字符之前,根据unicode表示的编码对字节流进行解码 在我的终端中,为什么'ee'.lower()或str('ee

我希望对Python中的Unicode和str方法进行一些澄清。在阅读了一些关于Unicode的文章后,我仍然有一些疑问,希望大家能在以下方面帮助我:

  • 我说的对吗?当声明unicode字符串时,例如
    word=u'foo'
    ,python使用终端的编码,在例如
    UTF-8
    中解码
    foo
    ,并在unicode中分配
    word
    十六进制表示

  • 那么,一般来说,打印文件中的字符的过程是否总是在显示映射的字符之前,根据unicode表示的编码对字节流进行解码

  • 在我的终端中,为什么
    'ee'.lower()
    str('ee')
    显示为十六进制
    '\xc3\xa9'
    ,而'a'.lower()不显示


  • 我不认为Python在控制台I/O上有任何自动编码或解码。考虑如下:

    >>> 'é'
    '\xc3\xa9'
    >>> 'é'.decode('UTF-8')
    u'\xe9'
    
    您会注意到,
    \xe9
    是的Unicode代码点,而
    \xc3\xa9
    是对应于UTF-8中相同字符的字节序列

    Python3中的所有内容都会发生变化,因为所有字符串都是Unicode。我不确定那里的规则

  • 请参阅关于如何指定Python源文件的编码。对于Python解释器,有一个PythonionEncoding环境变量

  • 你使用什么操作系统


  • 首先,我们应该清楚,我们只讨论Python2。Python 3则不同

  • 你说得对。但如果在py文件中写入u“abcd”,则源文件编码的声明将决定解释器如何解码字符串
  • 您需要先对其进行解码,然后对其进行编码并打印。在Python 2中,不要直接打印unicode!否则,如果系统以不兼容的方式(如“ascii”)对其进行编码,则会引发异常。 您必须明确地执行所有这些操作

  • 简短的回答是“a”不必在“\x61”中表示,“a”只是更具可读性。较长的回答:通常在交互式shell中,如果键入一个值并按enter键,Python将显示字符串的repr()。我认为“repr”将尝试以ascii表示打印所有内容。对于“a”,它已经是ascii码了,所以直接输出。对于str“é”,它是UTF-8编码的二进制流,因此Python将每个字节转义并打印为“xc3\xa9”

  • 语句
    word=u'foo'
    指定一个unicode字符串对象,而不是“十六进制表示法”。Unicode对象表示文本字符序列。此外,在这种情况下考虑解码也是错误的。Unicode不是编码,也没有“有”编码
  • 对。解码输入:编码输出
  • 对于非unicode字符串文本的
    repr
    ,Python将使用
    sys.stdin.encoding
    ;对于unicode字符串文本的
    repr
    ,Python将使用“unicode\u转义”

  • 重新“自动编码/解码”:检查
    sys.stdin.encoding
    sys.stdout.encoding