django发送邮件csv附件乱码问题

问题原因

EmailMultiAlternatives模块发送StringIO的数据作为csv的附件,在windows打开csv文件后乱码,修改如下部分后,附件为utf-8编码格式,所以在windows上打开csv文件是乱码的,因为wps打开默认是按ansi格式解码,但将csv文件在notepad中是可以正常打开的,因为notepad可以按照utf-8解码。

1
2
b = make_header([('数据归档.csv', 'utf-8')]).encode('utf-8')
email.attach(b, csvfile.getvalue().encode('utf-8'))

解决方案

可以在windows上将csv文件转码为asci格式的gbk编码,但是表情会变为问号,还不清楚是什么原因,或者将csv文件在手机wps打开,再另存为xls文件,再发给电脑就好了,但是很麻烦。

后面改了直接使用xlwt生成xls文件的办法,发现生成的文件就是asci格式的了,所以直接就解决了这个问题,我也是醉了。

1
2
3
4
5
workboot = xlwt.Workbook(encoding='utf-8')
workboot.save(xls_filename)
# ...
content = open(xls_filename, 'rb').read()
email.attach(filename, content)

nephen wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!