API调用上的UnicodeEncodeError(json)

时间:2017-07-17 21:37:32

标签: python json api unicode python-unicode

我正在尝试打印出这个API调用的结果,但是我得到了一个UnicodeEncodeError。可能超级noob问题,但真的很感激任何帮助这个:)

import http.client
import json

api_key = 'hidden'
connection = http.client.HTTPConnection('api.football-data.org')
headers = { 'X-Auth-Token': api_key, 'X-Response-Control': 'minified' }
connection.request('GET', '/v1/competitions', None, headers)
response = json.loads(connection.getresponse().read().decode())

print(response)

错误:

追踪(最近一次通话):   文件“/ Users / kjetilbergtun / Dropbox / My Python Projects / footballapi.py”,第13行,in     打印(响应)

UnicodeEncodeError :'ascii'编解码器无法对位置51中的字符'\ xe9'进行编码:序号不在范围内(128)

3 个答案:

答案 0 :(得分:0)

问题是你正在尝试处理非ascii字符。您需要使用.encode('utf-8')

在unicode中对其进行编码

答案 1 :(得分:0)

encode使用

print将字符串中的Unicode字符转换为可以发送到输出设备的字节流。

在启动Python之前,您可以将环境变量PYTHONIOENCODING设置为控制台所需的编码。如果您不知道应该是什么,我建议您在Windows上尝试mbcs,在其他任何地方尝试utf-8。如果您不提供编码,则默认值为ascii,仅适用于最简单的字符串。

答案 2 :(得分:-1)

由于您的响应是一个字节对象,因此需要解码才能返回字符串

import http.client
import json

api_key = 'hidden'
connection = http.client.HTTPConnection('api.football-data.org')
headers = { 'X-Auth-Token': api_key, 'X-Response-Control': 'minified' }
connection.request('GET', '/v1/competitions', None, headers)
print (connection.getresponse().read().decode("utf-8"))