python http 返回json中文乱码

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)不使用

你可能感兴趣的:(python http 返回json中文乱码)