最近接到客户的一个需求,要求导出csv文件,然后客户电脑上只有
Excel工具,在客户用Excel打开csv文件的时候出现中文乱码,经过排查发现默认导出的格式是utf-8格式,而Excel表格没办法直接打开这个格式的csv文件,所以出现乱码,经过调查将UTF-8编码转换成UTF-8 BOM编码就可正常使用Excel表格打开。
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