You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在POST请求中正确传递带重音特殊字符以调用WhatsApp API发消息

问题根因

你两次写法的问题都出在手动构造JSON字符串+编码不匹配:

  • 第一次写法里,你手动写的\xe9是 Latin-1 编码下字符é的字节转义,字符串本身不是UTF-8编码,即使请求头声明了charset=utf-8,实际发送的内容和声明的编码不一致,服务端解析就会出现菱形问号乱码。
  • 第二次写法你主动把内容编码为Latin-1格式,但JSON规范默认要求使用UTF-8编码,服务端按UTF-8规则解析Latin-1编码的内容,自然还是乱码。

修复方案

直接使用requests库内置的json参数传递请求体,不需要手动拼接JSON字符串、不需要手动编码、也不需要手动声明Content-Type的charset,requests会自动完成JSON序列化、UTF-8编码、请求头补充的全流程:

def send_message():
    headers = {
        'x-maytapi-key': API_TOKEN,
    }
    url = f"{INSTANCE_URL}/{PRODUCT_ID}/{PHONE_ID}/sendMessage"
    # 直接传Python字典,不要手动拼JSON字符串
    payload = {
        "message": "Essa mensagem é um teste, por favor desconsidere",
        "to_number": "+55XXXXXXXXXXX",
        "type": "text"
    }
    # 用json参数传递payload,不要用data
    response = requests.post(url, headers=headers, json=payload)
    print(response.text)

这个写法会自动把é等特殊字符按UTF-8编码序列化到JSON请求体里,完全符合WhatsApp API的编码要求,不会出现乱码。

内容的提问来源于stack exchange,提问作者Bullzeye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:36:03