Python中unicode和str方法的noob查询
我希望对Python中的Unicode和str方法进行一些澄清。在阅读了一些关于Unicode的文章后,我仍然有一些疑问,希望大家能在以下方面帮助我: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
word=u'foo'
,python使用终端的编码,在例如UTF-8
中解码foo
,并在unicode中分配word
十六进制表示'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。我不确定那里的规则
首先,我们应该清楚,我们只讨论Python2。Python 3则不同
word=u'foo'
指定一个unicode字符串对象,而不是“十六进制表示法”。Unicode对象表示文本字符序列。此外,在这种情况下考虑解码也是错误的。Unicode不是编码,也没有“有”编码repr
,Python将使用sys.stdin.encoding
;对于unicode字符串文本的repr
,Python将使用“unicode\u转义”重新“自动编码/解码”:检查
sys.stdin.encoding
和sys.stdout.encoding
。