蟒蛇:2.7.3
django:1.3.1
#:coding=utf-8:
import csv
from django.utils.encoding import smart_str
from task.models import Task
def export_history_templates(output, encoding='cp932'):
header = [
u'ID',
u'NAME',
u'SENDER',
]
header = [s.encode(encoding) for s in header]
writer = csv.writer(output)
writer.writerow(header)
for t in Task.objects.order_by('-id'):
r = [
t.id,
smart_str(t.name, encoding=encoding),
smart_str(t.user, encoding=encoding), # user is a User table object
]
writer.writerow(r)
这是一种 csv 下载方法。生成 csv 文件后。我可以正确看到user
utf-8 编码的数据,但不能正确地在 shift_jis(converted cp932
) 中。
为什么以及如何做?