Dav*_*jad 8 python string unicode python-2.x
我试图从巴西Portogese文本解码:
'Demais Subfun\xc3\xa7\xc3\xb5es 12'
它应该是
'DemaisSubfunções12'
>> a.decode('unicode_escape')
>> a.encode('unicode_escape')
>> a.decode('ascii')
>> a.encode('ascii')
Run Code Online (Sandbox Code Playgroud)
所有给予:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 13:
ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
另一方面,这给出了:
>> print a.encode('utf-8')
Demais Subfun?â?º?â?Áes 12
>> print a
Demais Subfunções 12
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 18
您有非 ASCII编码的二进制数据.该\xhh编码点指示您的数据进行编码不同的编解码,并且看到Python的产生表示数据的使用repr()功能,可重复使用的Python的文字准确,您可以重新创建完全相同的值.调试程序时,此表示非常有用.
换句话说,\xhh转义序列表示单个字节,并且hh是该字节的十六进制值.你有4个字节,其中包含十六进制值C3,A7,C3和B5,它们不映射到可打印的ASCII字符,因此Python使用\xhh符号.
您改为使用UTF-8数据,将其解码为:
>>> 'Demais Subfun\xc3\xa7\xc3\xb5es 12'.decode('utf8')
u'Demais Subfun\xe7\xf5es 12'
>>> print 'Demais Subfun\xc3\xa7\xc3\xb5es 12'.decode('utf8')
Demais Subfunções 12
Run Code Online (Sandbox Code Playgroud)
所述C3 A7字节加在一起编码带下加符U + 00E7拉丁小字母C,而C3 B5字节编码U + 00F5小写拉丁字母o WITH TILDE.
ASCII恰好是UTF-8编解码器的一个子集,这就是为什么所有其他字母都可以在Python repr()输出中表示的原因.
| 归档时间: |
|
| 查看次数: |
11381 次 |
| 最近记录: |