我刚刚将我的 webapp 移植到 python 3。我在我的 Mac 上开发并部署在 CentOS 服务器上。我发现许多UnicodeDecodeError
在我的本地测试环境中没有发生,但它们出现在部署服务器中(当然:D)
其中大多数我通过在打开文件时指定编码来修复。但是,有一个地方我不知道如何指定编码,它在日志记录中。我仍然收到错误,例如:
UnicodeEncodeError: 'ascii' codec can't encode character '\xab' in position 85: ordinal not in range(128)
python 2中存在相同的问题(在两个平台上),并通过这个解决了
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
sys.getdefaultencoder()
将from的值更改ascii
为utf-8
但是现在在 python3sys.getdefaultencoder()
中已经utf-8
默认了(为什么我们不应该在 py 脚本中使用 sys.setdefaultencoding("utf-8")?)所以我对导致这种行为差异的原因一无所知。
所以:
- 我应该寻找什么来了解为什么两个平台都有不同的编码默认值?
- 我该如何解决这个日志记录?