猿问

如何使用django框架通过python将utf-8更改为cp932?

的Python: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)中看到数据。


为什么以及怎么办?


慕标琳琳
浏览 253回答 2
2回答

临摹微笑

尝试将user实例转换为Unicode,如下所示:smart_str(unicode(t.user), encoding=encoding)希望这行得通!
随时随地看视频慕课网APP

相关分类

Python
我要回答