用python时,经常会操作文件夹,由于windows文件夹和文件的名称本身采用的就是unicode编码,而python默认使用的是ascii编码,导致常常发生编码解析越界的问题。
处理方式:写函数时,如果需要unicode,最好自动处理一下
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
btw:值得注意的就是,两个不同的编码是不可以使用+操作符直接相联的。
使用smtp发送邮件,你会发现标题和邮件主体同时编码正确是件很难的事情,不是标题显示乱码就是邮件主体乱码。
我的最终处理方式:
对主体采用HTML方式支持,在HTML表头加入支持gb2312的属性,对header就需要用到:
email.Header这个lib了,例如:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
这样就可以很好的处理这种情况了
如果你也遇到过中文处理的问题或者有其他的方法,欢迎讨论!