我正在使用restfulapi中的数据,它返回字符串和整数值。但是,它似乎返回了一些编码/解码错误的字符串值(可能)。在
预期字符串:
criança
收到的字符串:
^{pr2}$这是我的代码:
url = "https://analytics.us.algolia.com/2/searches?index={index}&startDate={yesterday}".format(index=index, yesterday=yesterday)
headers = { 'X-Algolia-Application-Id': app_id,
'X-Algolia-API-Key': app_key,
'Content-Type': 'application/json; charset=utf-8'}
response = requests.get(url, headers=headers)
response_json = json.loads(response.text)
print(response_json)
这是一个python3.6.x脚本,它将从Algolia的restfulapi获取数据并将其存储在amazonredshift中。我在ubuntu18.04上编写这个脚本,我的终端字符编码集是pt_BR.UTF-8
(echo $LANG
)和UTF-8(locale charmap
)。在
当我在数据库中存储数据之前打印它时,我发现接收到的数据是错误的-数据库被设置为使用charset=utf8
。我也可以通过SELECT
语句在数据库中看到这个错误的数据。在
我发现了这个UTF-8 Encoding Debugging Chart,它指出这可能是因为UTF-8字节被解释为Windows-1252(或iso8859-1)字节。在
如何使用Python函数/lib来处理它?在
requests
库试图guess the encoding of the response。 可能requests
正在将响应解码为cp1252
(又称Windows-1252)。在我猜这是因为如果你把文本编码回
cp1252
,然后把它解码成utf-8
,你会看到正确的文本:基于此,我猜如果你问你的响应对象它猜到了什么编码,它会告诉你
^{pr2}$cp1252
:像这样强制
requests
解码为utf-8
,可能会解决您的问题:相关问题 更多 >
编程相关推荐