问题描述:
用docker封装一个容器,这个容器提供一个服务,请求这个服务时,报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9
原因以及解决:
编码错误原因:python的str默认是ascii编码,和unicode编码冲突,就会报这个错误。
对于 Python 2.X:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
如果你在python3.X使用了上述方法,会报错: NameError: name 'reload' is not defined
对于 <= Python 3.3:
import imp
imp.reload(sys)
对于 >= Python 3.4:
import importlib
importlib.reload(sys)
注意:
1. Python 3 与 Python 2 有很大的区别,其中Python 3 系统默认使用的就是utf-8编码。
2. 所以,对于使用的是Python 3 的情况,就不需要sys.setdefaultencoding("utf-8")这段代码。
3. 最重要的是,Python 3 的 sys 库里面已经没有 setdefaultencoding() 函数了。
参考:
Reloading module giving NameError: name ‘reload’ is not defined
http://stackoverflow.com/questions/961162/reloading-module-giving-nameerror-name-reload-is-not-defined