当我 post a JSON 使用 Mercado Libre 的 API 时,所有重音字母都被删除,我认为这不是默认行为

When I post a JSON while using Mercado Libre's API all accented letters are removed and I don't think this is the default behavior

问题

我正在使用巴西版的 Mercado Libre API 来发布产品。每当我 post 一个 JSON 时,重音符号就会被他们的系统删除,我认为 根本不应该是默认行为 因为葡萄牙语有所有这些口音。他们的 API 文档没有提及任何相关内容。

我尝试了什么

我尝试以各种方式对它进行多次编码和解码,并使用带和不带 json.dumps() 的 UTF-8 和 latin1。

我最后一次尝试添加:

headers['Content-Type'] = "application/json;charset=UTF-8"

所有这一切都没有完全消失,重音字母被转义序列取代,例如:

Curto a Médio -> Curto a M\xe9dio

我也试过没有“charset=UTF-8”部分,但重音仍然被转义了。

代码

headers = {
                'Authorization': f"Bearer {ACCESS_TOKEN}",
                }

    if request_type == 'Product upload':
        headers['Content-Type'] = "application/json;"

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

数据

[
   {
      "id":"GENDER",
      "value_name":"Mulher"
   },
   {
      "id":"BRAND",
      "value_name":"Torricella"
   },
   {
      "id":"MODEL",
      "value_name":"65019A"
   },
   {
      "id":"FOOTWEAR_TYPE",
      "value_name":"Botas"
   },
   {
      "id":"FOOTWEAR_STYLE",
      "value_name":"Bota Bico Fino"
   },
   {
      "id":"SHAFT_TYPE",
      "value_name":"Curto a Médio"
   },
   {
      "id":"RELEASE_SEASON",
      "value_name":"Primavera/Verão"
   },
   {
      "id":"RELEASE_YEAR",
      "value_name":2021
   }
]

很遗憾,他们不向非官方合作伙伴提供任何形式的支持。

我还能尝试什么?我认为这不太可能是他们 API 的问题,因为他们价值 4 十亿美元而且他们的 API 已经存在了很长时间。

使用 json.dumps(data) 而没有 ensure_ascii=False 有效!

确实,如果 ensure_ascii=True(默认值),输出将保证所有传入的非 ASCII 字符都正确转义。