Python请求响应解码

时间:2017-08-22 13:22:55

标签: python character-encoding python-requests

我使用python请求发送请求然后打印响应,让我感到困惑的是,响应中的汉字就像 \ u6570 \ u636e \ u8fd4 \ u5610 \ u6210 \ u529f
这是代码:

# -*- coding:utf-8 -*-
import requests

url = "http://www.biyou888.com/api/getdataapi.php?ac=3005&sess_token=&urlid=-1"
res = requests.get(url)
if res.status_code == 200:
    print res.text

以下是回复

response data

如何转移回复?我尝试使用编码和解码,但它起作用。

3 个答案:

答案 0 :(得分:3)

使用requests.Response.json,您将获得中文字符。

doParallel::registerDoParallel()

答案 1 :(得分:1)

如何通过 Python 请求使用 response.encoding?

为了说明,让我们ping Github的API。

# import requests module 
import requests 
  
# Making a get request 
response = requests.get('https://api.github.com') 
  
# print response 
print(response) 
  
# print encoding of response 
print(response.encoding)

输出:

<Response [200]>
utf-8

因此,在您的示例中,尝试使用 res.json() 而不是 res.text

如:

# encoding of your response 
print(res.encoding)

res.encoding='utf-8-sig'
print(res.json())
sig中的

utf-8-sigsignature的缩写(即签名utf-8文件)。

使用 utf-8-sig 读取文件会将 BOM 视为文件信息而不是字符串。

答案 2 :(得分:0)

import requests
import json

url = "http://www.biyou888.com/api/getdataapi.php?ac=3005&sess_token=&urlid=-1"
res = requests.get(url)
res_dict = {}
if res.status_code == 200:
    print type(res.text)
    print res.text
    res_dict = json.loads(res.text)  # get a dict from parameter string

    print "Dict:"
    print type(res_dict)
    print res_dict
    print res_dict['info']

使用json模块解析该输入。前缀u只表示它是一个unicode字符串。当您使用它们时,u前缀不会影响,就像我在最后几行显示的那样。