0

我有一些需要导入的外部数据。如何将输入字符串编码为 un​​icode/utf8?

这是探测线的示例

>>>'Compa\xf1\xeda Dominicana de Tel\xe9fonos, C. por A. - CODETEL'.encode("utf8")
Traceback(最近一次调用最后):
文件“”,第 1 行,在
UnicodeDecodeError: 'ascii ' 编解码器无法解码位置 5 中的字节 0xf1:序数不在范围内(128)

4

3 回答 3

3

要将字节转换为 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

于 2012-11-26T08:15:24.967 回答
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")
于 2012-11-26T08:15:52.343 回答
1

encode从 unicode 字符串转换为字节序列。 decode从字节序列转换为 unicode 字符串。您想要decode,因为您的数据已经编码。

更一般地说,如果您从外部源读取字符串,您总是想要解码,因为世界上没有“unicode 字符串”这样的东西。只有各种编码中的 unicode 字符串表示。Unicode 字符串就像柏拉图式的理想,只能通过有形的编码媒介来传输。

于 2012-11-26T08:15:59.327 回答