首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是Python unicode转义错误吗?

这是Python unicode转义错误吗?
EN

Stack Overflow用户
提问于 2015-07-30 15:07:42
回答 2查看 93关注 0票数 0

我正在学习Python编码,我遇到了下面的情况,这是为我而设的,我想知道为什么。

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

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

python --version的输出为Python 2.7.6

然后输入python输入python:

代码语言:javascript
复制
>>> 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'

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-30 15:14:03

当Python打印字节(Python2中的str)时,如果该字节是可打印的,它就会为该字节打印相应的ASCII字符,否则十六进制就会转义它。

\x62对应于ASCII 'b‘。只要看一下这个字节,就可以看到这一点:

代码语言:javascript
复制
>>> '\x62'
'b'
票数 3
EN

Stack Overflow用户

发布于 2015-07-30 15:17:29

b是一个可打印的字符,所以repr()将显示字符本身,而不是转义形式。

参考资料:str.isprintable

请注意,此上下文中的可打印字符是在对字符串调用repr()时不应转义的字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31727478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档