如何在 post 请求中使用特殊字符(重音符号)

How to use special characters (accents) on post requests

我是新来的。

我通过这个post找到了这个论坛,基本上OP和我有同样的问题,但答案对我不起作用。

我想要的是发送一个 post 请求,该请求通过 API 发送一条 whatsapp 消息,但是如果我尝试在字母上使用重音符号,则发送的消息将完全损坏( see the example here) 带有问号的奇怪菱形应该是一个“é”字符。

所以,我的问题是:如何通过 whatsapp 发送“é”?我是不是搞错了编码之类的?

这是我要执行的操作的代码:

def send_message():
    headers = {
    'Content-Type': 'application/json;charset=utf-8',
    'x-maytapi-key': API_TOKEN,
    }
    url = INSTANCE_URL + "/" + PRODUCT_ID + "/" + PHONE_ID + "/sendMessage"
    data = '{ "message": "Essa mensagem \xe9 um teste, por favor desconsidere", "to_number": "+55XXXXXXXXXXX", "type": "text" }'
    response = requests.post(url, headers=headers, data=data)

上面的代码发送了消息,但消息到达时如图所示(奇怪的钻石)

现在这是我在看到开头提到的论坛 post 后尝试过的方法:

def send_message():
    headers = {
    'Content-Type': 'application/json',
    'x-maytapi-key': API_TOKEN,
    }
    url = INSTANCE_URL + "/" + PRODUCT_ID + "/" + PHONE_ID + "/sendMessage"
    data = '{ "message": "Essa mensagem \xe9 um teste, por favor desconsidere", "to_number": "+55XXXXXXXXX", "type": "text" }'.encode('latin-1')

    response = requests.post(url, headers=headers, data=data)
    print(response.text)

不幸的是,结果是一样的。

您可以尝试在执行请求时使用 json= 参数而不是 data=。另外,首先尝试删除 Content-Type header:

def send_message():
    headers = {
        # "Content-Type": "application/json;charset=utf-8",
        "x-maytapi-key": API_TOKEN,
    }
    url = INSTANCE_URL + "/" + PRODUCT_ID + "/" + PHONE_ID + "/sendMessage"
    data = {
        "message": "Essa mensagem é um teste, por favor desconsidere",
        "to_number": "+55XXXXXXXXXXX",
        "type": "text",
    }

    response = requests.post(url, headers=headers, json=data)