我使用的是python 2.7.10。
在处理字符编码时,在阅读了大量关于堆栈溢出等主题的文章后,我遇到了这种对我来说很奇怪的行为。Python解释器输入
>>>u'\u00b0'将产生以下输出:
u'\xb0'我可以使用dos窗口、空闲控制台和wing-ide python shell重复此行为。
我的假设(如果我错了请纠正我):“学位符号”有unicode 0x00b0,utf-8代码0xc2b0,拉丁语-1代码0xb0。Python文档说,带有u前缀的字符串文字是使用unicode编码的。
问:为什么结果转换为unicode字符串文字和一个字节转义序列匹配拉丁-1编码,而不是持久化unicode转义序列?
提前感谢您的帮助。
发布于 2016-09-22 23:05:14
Python使用一些规则来确定为每个字符从repr输出的内容。在0x0080到0x00ff范围内的Unicode字符码点的规则是使用序列\xdd,其中dd是十六进制代码,至少在Python2中是这样。在Python 3中,所有可打印的字符都将显示,而不会转换为十六进制代码。
至于为什么它看起来像拉丁-1编码,这是因为Unicode是以拉丁-1为基础开始的。直到0xff的所有码点都与其对应的拉丁文-1码点匹配。
https://stackoverflow.com/questions/39642521
复制相似问题