【发布时间】:2014-11-29 00:15:55
【问题描述】:
我正在编写一些从外部 API 获取一堆字符串的 python 代码。这些字符串是带有奇怪“斜线”字符的常规 python 字符串。我认为这意味着实际数据是 UTF-8,但 python 认为它是 ascii(或者更确切地说是其他一些不正确的编码)。解决方案(我假设)是对字符串运行某种操作以“修复它”。但是我知道的每一种转换方式都会返回一个错误:
>>> s = 'blah \xe9 blah'
>>> unicode(s)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 5: ordinal not in range(128)
>>> s.decode('utf-8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 5: invalid continuation byte
>>> s.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 5: ordinal not in range(128)
【问题讨论】:
-
print 'blah \xe9 blah'.decode("latin-1")