擅长:python、mysql、java
<p>使用Python的<code>csv</code>模块,您可以编写一个UTF-8文件,如果将BOM放在文件的开头,Excel将正确读取该文件。</p>
<pre><code>with open('myfile.csv', 'wb') as f:
f.write(u'\ufeff'.encode('utf8'))
writer = csv.writer(f, delimiter=';', lineterminator='\n', quoting=csv.QUOTE_ALL, dialect='excel')
...
</code></pre>
<p>这同样适用于<code>unicodecsv</code>。我想您可以直接将BOM写入<code>HttpResponse</code>对象,如果不能,您可以使用<code>StringIO</code>首先写入文件。</p>
<p><strong>编辑:</strong></p>
<p>下面是一些用非ASCII字符编写UTF-8csv文件的示例代码。为了简单起见,我把Django从等式中去掉。我可以用Excel读取那个文件。</p>
<pre><code># -*- coding: utf-8 -*-
import csv
import os
response = open(os.path.expanduser('~/utf8_test.csv'), 'wb')
response.write(u'\ufeff'.encode('utf8'))
writer = csv.writer(response, delimiter=';' , dialect='excel')
writer.writerow(['Second row', 'A', 'B', 'C', '"Testing"', u"ελληνικά".encode('utf8')])
response.close()
</code></pre>