python-json-body-reques中的德语元音变音

2024-09-29 00:12:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我向RASA聊天机器人发送一个POST命令,其中包含一条消息。我的请求看起来像这样

import requests
import json
jsonbody = '{"message": "Wann ist der nächste Feiertag?"}'
r = requests.post('http://localhost:5005/webhooks/rest/webhook', data=jsonbody,
                              headers={'content-type': 'application/json'})
js = r.text
rep = json.loads(js)

我在运行rep = json.loads(js)时得到raise JSONDecodeError("Expecting value", s, err.value) from None。在

经过进一步的调查,我发现我从POST请求中得到了一个Response 400。在

我尝试了几件事,例如我把德语ä改成{}。这个很好用。{bot{6>在后面的cdjs}后面的字符串

'[{"recipient_id":"default","text":"Der n\\u00e4chste Feiertag ist Tag der Deutschen Einheit am Donnerstag den 03.10.2019"}]'

在我打印列表print(rep)之后,我得到了最后一条消息。在

^{pr2}$

所以这里的问题是德语元音变音在我的jsonbody中。虽然在我用ae而不是结尾的ä发送一个请求后,它们将显示为propper。我已经试过在我的请求中设置一个字符集了

r = requests.post('http://localhost:5005/webhooks/rest/webhook', data=jsonbody,
                              headers={'content-type': 'application/json; charset=unicode'})

但在执行之后,我再次收到响应400错误。在

我将conda4.6.2与python3.6.6一起使用。我认为Python3可以处理像德语元音变音符这样的特殊字符。在

有什么建议可以在POST请求中允许德语元音变化?在


Tags: importjsonlocalhosthttp消息jspostrequests
2条回答
jsonbody = '{"message": "Wann ist der nächste Feiertag?"}'

我怀疑接受您请求的服务器不知道如何解析这个字符串。尽管我认为您的字符串是有效的JSON(因为https://www.json.org/表示字符串可能包含Unicode字符),但服务器的JSON解析器可能只接受ASCII数据。如果使用JSON的\uXXXXunicode转义序列编码ä可能会有更好的运气。您可以使用json.dumps来转义数据中的所有非ASCII字符。在

^{pr2}$

我正努力解决这个问题,但是在通过请求发送数据之前设置encode解决了这个问题:

jsonbody=jsonbody.encode()

在我的例子中,编码是utf-8,这个函数encode()的默认值。在

相关问题 更多 >