我正试图从巴西葡萄牙语文本中解码:
'Demais Subfun\xc3\xa7\xc3\xb5es 12'
应该是
'Demais Subfunções 12'
>> a.decode('unicode_escape')
>> a.encode('unicode_escape')
>> a.decode('ascii')
>> a.encode('ascii')
全部给予:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 13:
ordinal not in range(128)
另一方面,这给了:
>> print a.encode('utf-8')
Demais Subfun├â┬º├â┬Áes 12
>> print a
Demais Subfunções 12
您的二进制数据是非ASCII编码的。代码点} function 的一个表示,它可以被重新用作Python文本,精确地让您重新创建完全相同的值。在调试程序时,此表示非常有用。
\xhh
表示您的数据是用不同的编解码器编码的,您看到Python生成了数据using the ^{换句话说,
\xhh
转义序列表示单个字节,hh
是该字节的十六进制值。您有4个十六进制值为C3、A7、C3和B5的字节,它们不映射到可打印的ASCII字符,因此Python使用\xhh
符号。相反,你有UTF-8数据,解码如下:
C3 A7字节一起编码U+00E7 LATIN SMALL LETTER C WITH CEDILLA,而C3 B5字节编码U+00F5 LATIN SMALL LETTER O WITH TILDE。
ASCII恰好是UTF-8编解码器的一个子集,这就是为什么所有其他字母都可以在Python
repr()
输出中表示为UTF-8编解码器的原因。相关问题 更多 >
编程相关推荐