UTF8编码错误

时间:2012-11-26 08:11:33

标签: python unicode

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

以下是探测线的示例

  

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

3 个答案:

答案 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字符串就像柏拉图式的理想,只能通过编码的物质媒介传播。