2013-04-06 31 views
2

我试图使用为什么我在尝试在Python 2.7中打印字符串时出现错误?

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

要读取的数据库文件。我想打印的记录如下:

for record in race_db: 
    print record 

这给了我一个错误信息

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc9 in position 4: ordinal not in range(128)

于是,我就映射到Unicode

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

同样的事情。 UTF-8:

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

TypeError: coercing to Unicode: need string or buffer, datetime.date found

我只是想一些排序的toString功能我究竟做错了什么?我知道我可以成功循环所有记录,因为类似:

print 'blah' 

工作正常。只是编码中的某些东西让我感到沮丧。

回答

4

单字节\xC9不是UTF-8中任何有效的编码。你需要弄清楚文本是如何编码的 - 在这种情况下,它最有可能是ISO 8859-1Windows-1252。然后,相应地解码它。

举例来说,如果它的Windows 1252,你就如下解码:

string_record = 'foo \xc9 bar' 
print string_record.decode('Windows-1252') # Output: "foo É bar" 
相关问题