我有一些需要导入的外部数据。如何将输入字符串编码为 unicode/utf8?
这是探测线的示例
>>>'Compa\xf1\xeda Dominicana de Tel\xe9fonos, C. por A. - CODETEL'.encode("utf8")
Traceback(最近一次调用最后):
文件“”,第 1 行,在
UnicodeDecodeError: 'ascii ' 编解码器无法解码位置 5 中的字节 0xf1:序数不在范围内(128)
要将字节转换为 Unicode 字符串,请使用decode
而不是encode
.
这也不是UTF-8。我猜它是Latin-1:
>>> print 'Compa\xf1\xeda Dominicana de Tel\xe9fonos, C. por A. - CODETEL'.decode("latin1")
Compañía Dominicana de Teléfonos, C. por A. - CODETEL
.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")
encode
从 unicode 字符串转换为字节序列。 decode
从字节序列转换为 unicode 字符串。您想要decode
,因为您的数据已经编码。
更一般地说,如果您从外部源读取字符串,您总是想要解码,因为世界上没有“unicode 字符串”这样的东西。只有各种编码中的 unicode 字符串表示。Unicode 字符串就像柏拉图式的理想,只能通过有形的编码媒介来传输。