下面是一个生成CSV(python2.7)的flask视图的最小示例。在
# -*- coding: utf-8 -*-
import csv
import StringIO
from flask import Flask, Response
app = Flask(__name__)
@app.route('/example.csv')
def example_csv():
f = StringIO.StringIO()
writer = csv.writer(f)
writer.writerow(['Header 1', 'Header 2', 'Header 3'])
writer.writerows([unicode(_).encode('utf-8') for _ in row] for row in (['1', '2', '3'],
['a', 'b', 'c'],
[u'£', u'€', u'¥']))
response = Response(f.getvalue(), mimetype='text/csv')
response.headers['Content-Disposition'] = u'attachment; filename=example.csv'
return response
if __name__ == '__main__':
app.run(debug=True)
在Excel中打开可以得到:
^{pr2}$在苹果的数字应用程序中,最后一行显示正确。如何使Excel正确呈现?我缺少某种编码设置吗?在
Is it possible to force Excel recognize UTF-8 CSV files automatically?表明问题是Excel不认为文件是UTF-8,除非它以字节顺序标记开头(因为它与以前的行为向后兼容)。在
尝试添加编码的BOM作为响应的前三个字节:
或者,第一个答案表明,如果这不起作用,那么以UTF-16的形式发送内容通常会有效(但不是每个版本的Excel都是这样)。在
相关问题 更多 >
编程相关推荐