tornado 中文乱码解决

2018-01-16 0 By admin

使用tornado时,输出中文字符到控制台时报错误,

tornado 运行时中文字符报错
`UnicodeEncodeError: 'ascii' codec can't encode characters in position : ordinal not in range(128)
Unicode编码和Ascii编码发生了冲突了

排查顺序

1、代码文件中已添加
# coding:utf-8

2、连接数据库时也设置了默认字符;

3、数据库字段默认字符编码无误。

4、上面都没有问题,最后发现python运行环境的默认编码为ascii;
import sys
print sys.getdefaultencoding()
ascii

运行环境的编码和编程使用的编码存在冲突,使中文字符无法处理。

解决方法:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')