0

蟒蛇: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 文件后。我可以正确看到userutf-8 编码的数据,但不能正确地在 shift_jis(converted cp932) 中。

为什么以及如何做?

4

1 回答 1

1

尝试将user实例转换为 Unicode,如下所示:

smart_str(unicode(t.user), encoding=encoding)

希望这有效!

于 2013-05-28T00:59:05.760 回答