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