之前写的发邮件的程序部署到vps的时候出现了 UnicodeDecodeError: 'ascii' codec can't decode byte 0x.... 的错误。

按理说UnicodeDecodeError是python2才有的错误,这在python3出现是什么情况?

根据报错观察代码,发现打开文件的时候没指定encoding,于是指定'utf-8',改成这样:

with open(mail_html, 'r', encoding='utf-8') as f:
template = f.read()

改完之后还是这个错误,但是byte 0xe6 变成了别的值,说明指定编码是有效的(在没指定locale的主机上居然按ascii读取文件???!! Σ( ° △ °|||)︴)

问题还没完全解决,网上查了些资料,基本都是复制粘贴,看起来也没什么价值。

再仔细想想,因为代码调用了print,那会不会是stdout不支持中文显示?

于是找到之前看到的一段导入codecs设置stdout相关的代码:

import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

这样设置之后,的确OK了。

> 更新相关内容:
> https://blog.lilydjwg.me/2016/10/21/set-stdout-encoding-in-python.206653.html

最新文章

  1. PHP练习题
  2. 【PCB】电子元件封装大全及封装常识
  3. Quartus II 与 Modelsim 联调【转】
  4. Python全栈开发day9
  5. Position、Float
  6. linux MTD系统解析(转)
  7. Java使用泛型类来提高方法的可重用性
  8. Codeforces Round #209 (Div. 2)
  9. 在Linux下如何用Shell脚本读写XML?现有一个config.xml(转)
  10. r语言之生成随机序列,随机数生成函数及用法
  11. MalformedObjectNameException: Invalid character '' in value part of property
  12. [05] Session概要
  13. 什么时候可以用delete替代delete[]
  14. python端口扫描器
  15. c# 日期函数DateTime.ToString()日期的各种格式
  16. Dubbo 源码分析 - 集群容错之 Directory
  17. IP地址分类以及子网划分
  18. OS之内存管理 --- 虚拟内存管理(一)
  19. libev与libevent区别
  20. JavaScript 如何从引用类型(Array 、 Object)创建一个新的对象

热门文章

  1. split slice splice的简单区别
  2. 【转】CentOS 7.3 从下载到安装
  3. 三、Json方式函数
  4. 力扣 ——3Sum python (三数之和)实现
  5. Docker配置阿里云镜像加速pull
  6. C语言集成开发环境使用小记
  7. python读取配置文件(ini、yaml、xml)
  8. iview select下拉框的蜜汁小坑
  9. cocos2D-X call JNIHelper
  10. magento 站内优化和站外优化详解