2

我正在尝试使用

https://pypi.python.org/pypi/dbf

读取数据库文件。我正在尝试按如下方式打印记录:

for record in race_db:
    print record

这给了我一条错误消息

UnicodeDecodeError:“ascii”编解码器无法解码位置 4 中的字节 0xc9:序数不在范围内(128)

所以我尝试映射到 unicode

string_record = [unicode(item) for item in record]

一样。UTF-8:

string_record = [unicode(item, "utf8") for item in record]

TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到 datetime.date

我只想对字符串功能进行排序我做错了什么?我知道我可以成功地遍历所有记录,因为类似:

print 'blah'

工作正常。只是编码中的某些东西让我绊倒了。

4

1 回答 1

4

单个字节\xC9不是 UTF-8 中任何内容的有效编码。您需要弄清楚文本当前是如何编码的——在这种情况下,它很可能是ISO 8859-1Windows-1252。然后,相应地对其进行解码。

例如,如果它是 Windows-1252,您将按如下方式对其进行解码:

string_record = 'foo \xc9 bar'
print string_record.decode('Windows-1252')  # Output: "foo É bar"
于 2013-04-06T00:34:53.887 回答