json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题
python 2.7版本
# -*- coding: utf-8 -*-
m = {'a' : '你好'}
print m
=>{'a': '\xe4\xbd\xa0\xe5\xa5\xbd'}
print json.dumps(m)
=>{"a": "\u4f60\u597d"}
print json.dumps(m,ensure_ascii=False)
=>{"a": "浣犲ソ"}
print json.dumps(m,ensure_ascii=False).decode('utf8').encode('gb2312')
=>{"a": "你好"}
最近接触python,遇到这个问题,上网查资料,基本上都是说json.dumps(var,ensure_ascii=False)可以解决中文编码问题,然而并没有。
要解决中文编码,需要知道python2.7对字符串是怎么处理的:
由于# -- coding: utf-8 -- 的作用,文件内容以utf-8编码,所以print m
输出的是utf-8编码后的结果{‘a’: ‘\xe4\xbd\xa0\xe5\xa5\xbd’}
json.dumps 序列化时对中文默认使用的ascii编码, print json.dumps(m)输出unicode编码的结果
print json.dumps(m,ensure_ascii=False)不使用