Django 读写CSV 文件乱码问题

这篇博客探讨了在Django中处理CSV文件时遇到的乱码问题,包括读取时遇到的“xefxbbxbf”、“ufeff”字符以及中文乱码的情况。提出了通过“utf-8-sig”、“utf-8”和“gb2312”解码方法来修正乱码,并提供了针对Excel打开CSV文件时中文乱码的两种解决策略:修改Office语言设置和使用“gb2312”编码输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)当读入的文件出现“\xef\xbb\xbf”时,可以通过“utf-8-sig”解码修正。如:

line = f.readline()
line = line.decode('utf-8-sig')


2)当读入的文件出现“\ufeff”时,可以通过“utf-8”解码修正。如:

line = f.readline()
line = line.decode('utf-8')

3)当读入的中文出现乱码,如“\u4e2d\u56fd\u79fb\u52a817”的时候,可以通过“gb2312”解码修正。如:

line = f.readline()
line = line.decode('gb2312')

4)导出csv文件,用记事本打开文件显示正常,用excel打开文件时出现中文乱码。解决方法a)手动修改office的默认语言方式为“中文(简体)”,然后打开csv,并设置分隔符为“逗号”;b)可在程序中对输出的中文用“gb2312”进行编码,如:

def downloadfile(request):    
    response = HttpResponse(mimetype='text/csv')  
    response['Content-Disposition'] = 'attachment; filename  =contact_list.csv'  
    writer = csv.writer(response)  
    writer.writerow(['name', 'address', 'phone1', 'phone2'])
    contacts = ContactModel.objects.all()
    for contact in contacts:
        writer.writerow([contact.name.encode("gb2312"), contact.address.encode("gb2312"), 
                         contact.phone1, contact.phone2])
    return response













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值