这是Python unicode转义错误吗?

2024-06-01 00:33:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学习Python编码的东西,我遇到了以下情况,这是有线为我,我想知道为什么。你知道吗

首先,这是我的环境:osx10.10.3

命令echo $LC_CTYPE, $LANG的输出是: en_US.UTF-8, en_US.UTF-8

python --version的输出是Python 2.7.6

然后键入python进入python shell:

>>> import sys; reload(sys); sys.setdefaultencoding('utf8')
<module 'sys' (built-in)>
>>> s16 = u'我'.encode('utf16')
>>> s16
'\xff\xfe\x11b'
>>> for c in s16:
...   ord(c)
... 
255
254
17
98
>>> s16_ = '\xff\xfe\x11\x62'
>>> s16_
'\xff\xfe\x11b'

所以我的问题是:对于最后一行和第四行,为什么Python输出'\xff\xfe\x11b'而不是'\xff\xfe\x11\x62'?你知道吗


Tags: in编码环境sys情况utfenus
2条回答

当Python打印字节(python2中的str)时,如果该字节是可打印的,它将打印该字节对应的ASCII字符,否则hex将对其进行转义。你知道吗

\x62对应于ASCII“b”。只需查看该字节即可看到:

>>> '\x62'
'b'

b是可打印字符,因此repr()将显示字符本身,而不是转义形式。你知道吗


引用:^{}

Note that printable characters in this context are those which should not be escaped when repr() is invoked on a string.

相关问题 更多 >