API-调用 (json) 上的 UnicodeEncodeError
UnicodeEncodeError on API-call (json)
我正在尝试打印出此 API 调用的结果,但我收到了 UnicodeEncodeError。可能是超级菜鸟的问题,但真的很感激任何帮助:)
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 行,在
打印(响应)
UnicodeEncodeError: 'ascii' 编解码器无法对位置 51 中的字符 '\xe9' 进行编码:序号不在范围内 (128)
问题是您正在尝试处理非 ascii 字符。您需要使用 .encode('utf-8')
将其编码为 unicode
由于您的响应是一个字节对象,您需要解码以取回字符串
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"))
encode
被 print
用来将字符串中的 Unicode 字符转换为可以发送到输出设备的字节流。
在开始Python之前,您可以将环境变量PYTHONIOENCODING
设置为控制台所需的编码。如果您不知道应该是什么,我建议在 Windows 上尝试 mbcs
并在其他任何地方尝试 utf-8
。如果您不提供编码,则默认值为 ascii
,它仅适用于最简单的字符串。
我正在尝试打印出此 API 调用的结果,但我收到了 UnicodeEncodeError。可能是超级菜鸟的问题,但真的很感激任何帮助:)
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 行,在 打印(响应)
UnicodeEncodeError: 'ascii' 编解码器无法对位置 51 中的字符 '\xe9' 进行编码:序号不在范围内 (128)
问题是您正在尝试处理非 ascii 字符。您需要使用 .encode('utf-8')
由于您的响应是一个字节对象,您需要解码以取回字符串
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"))
encode
被 print
用来将字符串中的 Unicode 字符转换为可以发送到输出设备的字节流。
在开始Python之前,您可以将环境变量PYTHONIOENCODING
设置为控制台所需的编码。如果您不知道应该是什么,我建议在 Windows 上尝试 mbcs
并在其他任何地方尝试 utf-8
。如果您不提供编码,则默认值为 ascii
,它仅适用于最简单的字符串。