关于Python csv导出的csv文件通过excel表格打开中文乱码问题

本文介绍了当使用Excel打开UTF-8编码的CSV文件导致中文乱码的问题。关键在于通过在Python中设置charset为'utf-8-sig',确保CSV文件以正确的格式导出,以便Excel能正确识别中文字符。通过HttpResponse响应内容并设置合适的Content-Disposition头,可以实现这一目标。
摘要由CSDN通过智能技术生成

前言

最近接到客户的一个需求,要求导出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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值