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

Python POST请求阿拉伯语UTF-8编码问题:接收方获Unicode转义字符

解决Python POST请求中阿拉伯语转Unicode转义的问题

问题核心:使用requests.post的json参数发送包含阿拉伯语的字典时,requests会自动将非ASCII字符转为Unicode转义序列(如\u062c\u0648\u062c\u0644),而接收方无法解析这类转义内容。

解决方案

不要依赖requests自动序列化JSON,而是手动将字典序列化为JSON字符串,强制保留原始非ASCII字符,再通过data参数发送:

  1. 导入json模块
  2. 手动调用json.dumps(),设置ensure_ascii=False
  3. 请求时使用data参数传递序列化后的字符串,并在headers中明确指定Content-Type: application/json

修改后的代码

import json
import requests

headers = {
    'accept': 'application/json',
    'apikey': 'XXXXXXXXXX',
    'Content-Type': 'application/json'  # 必须添加这个头
}

# 要发送的数据
payload = {
    'Data': {
        'SickLeaveDate': '1444-10-07',
        'PatientEmployeer': 'جوجل',
        'PatientJob': 'تطوير البرمجيات'
    }
}

# 手动序列化,保留原始字符
json_data = json.dumps(payload, ensure_ascii=False)

# 发送请求
response = requests.post(url, headers=headers, data=json_data.encode('utf-8'))

原理说明

  • requests的json参数内部调用json.dumps()时,默认ensure_ascii=True,会把所有非ASCII字符转成Unicode转义序列
  • 设置ensure_ascii=False后,JSON序列化会直接保留阿拉伯语等非ASCII字符的原始编码
  • 最后用encode('utf-8')把字符串转成字节流,确保请求体以UTF-8编码发送,接收方能正确解码原始文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:42:08