在python 下面一个包含中文字符串的列表(list)或字典,直接使用print会出现以下的结果:
>>> adict={'a':'中文'}
>>> print adict
{'a': '\xe4\xb8\xad\xe6\x96\x87'}
在输出处理好的数据结构的时候很不方便,需要使用以下方法进行输出:
>>> print json.dumps(adict,encoding="UTF-8", ensure_ascii=False)
{"a": "中文"}
具体原因呢??
对于第一种方式,python默认是使用ascii输出utf8字符
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
那意思是不是将这个改成utf8,就可以显示呢?
>>> reload(sys)
>>> sys.setdefaultencoding('utf8')
>>> sys.getdefaultencoding()
'utf8'
>>>
>>> aidct={'a':'中文'}
>>> print adict
{'a': '\xe4\xb8\xad\xe6\x96\x87'}
依旧还是这样子!!!
【参考资料】
2、http://stackoverflow.com/questions/18337407/saving-utf-8-texts-in-json-dumps-as-utf8-not-as-u-escape-sequence