繁体   English   中英

Python请求响应解码

[英]Python Requests response decode

我使用python请求发送请求,然后打印响应,让我困惑的是响应中的汉字类似于\数\据\返\回\成\功
这是代码:

# -*- 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

下面是回复

响应数据

我应该怎么做才能传输响应? 我尝试使用编码和解码,但它起作用了。

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

import requests
import json

url = "http://www.biyou888.com/api/getdataapi.phpac=3005&sess_token=&urlid=-1"
res = requests.get(url)
if res.status_code == 200:
    res_payload_dict = res.json()
    print(res_payload_dict)

如何使用 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())

sigutf-8-sig是的缩写signature (即签名UTF-8文件)。

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

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前缀不会影响,就像我在最后几行显示的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM