<p>首先,使用<a href="http://docs.python.org/release/2.6.6/library/csv.html" rel="nofollow noreferrer">2.6 version of the documentation</a>。每次发布都可以更改。它明确表示不支持Unicode,但支持UTF-8。<a href="https://stackoverflow.com/questions/643694/utf-8-vs-unicode">Technically</a>,这不是一回事。正如医生所说:</p>
<blockquote>
<p>The csv module doesn’t directly support reading and writing Unicode, but it is 8-bit-clean save for some problems with ASCII NUL characters. So you can write functions or classes that handle the encoding and decoding for you as long as you avoid encodings like UTF-16 that use NULs. UTF-8 is recommended.</p>
</blockquote>
<p>下面的示例(来自文档)展示了如何创建两个函数,将文本正确地读取为UTF-8作为CSV。您应该知道<code>csv.reader()</code>总是返回一个DictReader对象。</p>
<pre><code>import csv
def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
# csv.py doesn't do Unicode; encode temporarily as UTF-8:
csv_reader = csv.DictReader(utf_8_encoder(unicode_csv_data),
dialect=dialect, **kwargs)
for row in csv_reader:
# decode UTF-8 back to Unicode, cell by cell:
yield [unicode(cell, 'utf-8') for cell in row]
</code></pre>