我正在用Python读取一个文件csv
模块,并且还有另一个编码问题(抱歉,这里有太多问题)。
在 CSV 文件中,有 £ 符号。读入该行并打印后,它们已变为 \xa3。
尝试将它们编码为 Unicode 会产生UnicodeDecodeError
:
row = [unicode(x.strip()) for x in row]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 0: ordinal not in range(128)
我一直在读csv 文档以及 StackOverflow 上有关此问题的许多其他问题。我think£ 在 ASCII 中变成 \xa3 意味着原始 CSV 文件采用 UTF-8 格式。
(顺便问一下,有没有快速检查 CSV 文件编码的方法?)
如果它是UTF-8,那么csv模块不应该能够处理它吗?它似乎将所有符号转换为 ASCII,尽管文档声称它接受 UTF-8。
我试过添加一个unicode_csv_reader
功能如描述csv 示例,但这没有帮助。
- - 编辑 - - -
我应该澄清一件事。我见过这个问题,看起来非常相似。但添加unicode_csv_reader
那里定义的函数会产生不同的错误:
yield [unicode(cell, 'utf-8') for cell in row]
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 8: unexpected code byte
那么也许我的文件根本不是UTF8?我怎么知道?