欢迎光临
我们一直在努力

django中导出utf8编码的csv excel打开乱码

django中导出utf8编码的csv excel打开乱码的解决方法

使用如下的django view层代码实现导出csv的功能,但是下载下来打开发现在excel中显示的是乱码。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
def export_csv(request):
    user_ids = request.POST.get('user_ids', '')
    if not user_ids:
        return HttpResponse("<script>alert('无效请求,请选择要导出的记录');window.close();</script>")
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="user_%s.csv"' % (
        datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d'))
    writer = csv.writer(response)
    writer.writerow(['姓名', '年龄', '地址'])
    for item in User.objects.filter(
            id__in=map(lambda x: int(x), filter(lambda x: x, user_ids.split(",")))):
        writer.writerow(
            [item.name, item.age, item.address])
    return response

后来发现,此问题和python或者django并没有多大关系,即使你用java 用php,如果不做处理导出也是一样会在excel中乱码,问题出在excel判断文件是否是utf8使用的是bom头,
所以我们需要在生成csv的过程中,在文件头部写入bom。
如上面代码第六行后面加上


1
response.write("\ufeff")

即可解决,同理php或者java中也是一样的办法。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » django中导出utf8编码的csv excel打开乱码
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址