前言
最近接到客户的一个需求,要求导出csv文件,然后客户电脑上只有
Excel工具,在客户用Excel打开csv文件的时候出现中文乱码,经过排查发现默认导出的格式是utf-8格式,而Excel表格没办法直接打开这个格式的csv文件,所以出现乱码,经过调查将UTF-8编码转换成UTF-8 BOM编码就可正常使用Excel表格打开。
导入所需要的python包
import csv
from django.http import HttpResponse
代码演示
class ExportView(MesBaseListView):
queryset = models.objects.all()
serializer_class = Serializer
def list(self, request, *args, **kwargs):
# 下面这句代码是起关键作用的代码charset='utf-8-sig'
response = HttpResponse(content_type='text/csv', charset='utf-8-sig')
file_name = '文件名称.csv'
response['Set-Cookie'] = f"{task_id}=true; path=/"
response["Content-Disposition"] = "attachment; filename*=UTF-8''{}".format(escape_uri_path(file_name))
writer = csv.writer(response)
writer.writerow(['DATE', 'TIME', 'TPV(量测温度)℃', 'TSP(设定温度)℃', 'HPV(量测湿度)%RH', 'HSP(设定湿度)%RH'])
writer.writerows(res_list)
return response
本文介绍了当使用Excel打开UTF-8编码的CSV文件导致中文乱码的问题。关键在于通过在Python中设置charset为'utf-8-sig',确保CSV文件以正确的格式导出,以便Excel能正确识别中文字符。通过HttpResponse响应内容并设置合适的Content-Disposition头,可以实现这一目标。
1837

被折叠的 条评论
为什么被折叠?



