我使用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
以下是回复
如何转移回复?我尝试使用编码和解码,但它起作用。
答案 0 :(得分:3)
使用requests.Response.json,您将获得中文字符。
doParallel::registerDoParallel()
答案 1 :(得分:1)
为了说明,让我们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-sig
是signature
的缩写(即签名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
前缀不会影响,就像我在最后几行显示的那样。