python2.7中关于编码,json格式的中文输出显示

Posted PYTHON & ODOO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python2.7中关于编码,json格式的中文输出显示相关的知识,希望对你有一定的参考价值。

当我们用requests请求一个返回json的接口时候,

语法是

 result=requests.post(url,data).content

print type(result),result

 

得到的结果是

<type \'str\'> {"no":12,"err_code":220012,"error":null,"data":{"autoMsg":"","fid":6428441,"fname":"\\u884c\\u5c38\\u8d70\\u8089\\u7b2c\\u516d\\u5b63","tid":0,"is_login":1,"content":"","access_state":null,"vcode":{"need_vcode":0,"str_reason":"","captcha_vcode_str":"","captcha_code_type":0,"userstatevcode":0},"is_post_visible":0,"mute_text":null}}

这种形式,可以看到结果是字符串类型,但结果中包含了一串让人看不懂的东西 \\uxxxx的,这是中文对应的unicode编码形式。

 

下面我们查看result的原始内容

print repr(result)

 得到的结果是

{"no":12,"err_code":220012,"error":null,"data":{"autoMsg":"","fid":6428441,"fname":"\\\\u884c\\\\u5c38\\\\u8d70\\\\u8089\\\\u7b2c\\\\u516d\\\\u5b63","tid":0,"is_login":1,"content":"","access_state":null,"vcode":{"need_vcode":0,"str_reason":"","captcha_vcode_str":"","captcha_code_type":0,"userstatevcode":0},"is_post_visible":0,"mute_text":null}}\'

 

那么怎么样,显示出中文呢,

print res_content.decode(\'raw_unicode_escape\')

得到的结果是

{"no":12,"err_code":220012,"error":null,"data":{"autoMsg":"","fid":6428441,"fname":"行尸走肉第六季","tid":0,"is_login":1,"content":"","access_state":null,"vcode":{"need_vcode":0,"str_reason":"","captcha_vcode_str":"","captcha_code_type":0,"userstatevcode":0},"is_post_visible":0,"mute_text":null}}

这样就能看到中文了。

 

另外一种方法是

print json.dumps(json.loads(result),ensure_ascii=False)

得到的结果是

{"err_code": 220012, "data": {"vcode": {"captcha_code_type": 0, "captcha_vcode_str": "", "str_reason": "", "need_vcode": 0, "userstatevcode": 0}, "is_post_visible": 0, "access_state": null, "fid": 6428441, "autoMsg": "", "content": "", "fname": "行尸走肉第六季", "tid": 0, "mute_text": null, "is_login": 1}, "error": null, "no": 12}

这样也能显示出中文。

上面的这句话是json.loads把json字符串转换成字典,然后再要json.dumps转字符串。

 

 

我们再来看看python的直接print 一个包含中文的字典或者列表,看看结果

 

或者中国是一个unicode类型的

 

 上面两种情况直接print 一个列表,都会显示不出中文,除非是对列表进行遍历,一个个的print出来,这样才可以看到显示中文。

或者你想原封不动的显示出中文,那就借助print json.dumps(list,ensure_ascii=False)的用法,这样就能整体输出并且显示出中文了。

以上是关于python2.7中关于编码,json格式的中文输出显示的主要内容,如果未能解决你的问题,请参考以下文章

.net core中关于System.Text.Json的使用

原创python中文编码问题深入分析:python2.7文件读写中文编码问题

为啥我不能使用 urlencode 对 json 格式数据进行编码?

有关python2与python3中关于除的不同

GET请求中关于中文的编码与解码

python2.7提示编码出错