Python sys.setdefaultencoding('utf-8') 后就没输出

为了解决Python的 UnicodeDecodeError: 'ascii' codec can't decode byte ,我们可以加入以下代码。

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

但是在编辑的时候发现,普通的输出却不见了,如图 print 1都没反应。

查资料后解决,原来reload(sys)的时候,sys.stdout 这个参数被重置为了ipython 的对象,导致无法输出。因此可以用以下代码代替

import sys
stdo = sys.stdout
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout= stdo

在python 下面一个包含中文字符串的列表(list)或字典,直接使用print会出现以下的结果:

dict = {"asdf": "我们的python学习"}
print dict
{'asdf': 'xe6x88x91xe4xbbxacxe7x9ax84pythonxe5xadxa6xe4xb9xa0'}
在输出处理好的数据结构的时候很不方便,需要使用以下方法进行输出:
import json
print json.dumps(dict, encoding="UTF-8", ensure_ascii=False)

原文地址:https://www.cnblogs.com/vhills/p/7605126.html