我需要导入一些外部数据。如何将输入字符串编码为unicode / utf8?
以下是探测线的示例
>>>'Compa \ xf1 \ xeda Dominicana de Tel \ xe9fonos,C。por A. - CODETEL'.encode(“utf8”)
追溯(最近的呼叫最后):
文件“”,第1行,在中 UnicodeDecodeError:'ascii'编解码器无法解码位置5中的字节0xf1:序数不在范围内(128)
答案 0 :(得分:3)
要将字节转换为Unicode字符串,请使用decode
代替encode
。
这也不是UTF-8。我想这是Latin-1:
>>> print'Compa \ xf1 \ xeda Dominicana de Tel \ xe9fonos,C。por A. - CODETEL'.decode(“latin1”)
CompañíaDominicanadeTeléfonos,C。por A. - CODETEL
答案 1 :(得分:3)
.encode("utf8")
期望源是unicode字符串。您使用的是“常规”字符串,默认情况下使用“ascii”编码。你应该做点什么:
original_string.decode('original_encoding').encode('utf-8')
在你的情况下,我的猜测是:
'Compa\xf1\xeda Dominicana de Tel\xe9fonos, C. por A. - CODETEL'.decode("iso8859-1").encode("utf8")
答案 2 :(得分:1)
encode
从unicode字符串转换为字节序列。 decode
从字节序列转换为unicode字符串。您需要decode
,因为您的数据已经过编码。
更一般地说,如果您从外部源读取字符串,总是想要解码,因为世界上没有“unicode字符串”这样的东西。在各种编码中只有该unicode字符串的表示。 Unicode字符串就像柏拉图式的理想,只能通过编码的物质媒介传播。