【发布时间】:2019-09-06 13:13:26
【问题描述】:
我有一些 json 包含一些 thai 值。它看起来像
{
"TitleName": "คุณ",
"FirstName": "Simar"
}
我需要用这个带有确切thai 值的json 主体发出一个Http POST 请求。我正在使用Python 3 requests 库来发出请求。
我试过这个
headers = {
'Content-Type': "application/json",
'Authorization': "xxx",
'cache-control': "no-cache",
'Postman-Token': "xxx"
}
response = requests.request("POST", url, json=request, headers=headers)
它将json值生成为
"TitleName": "\\u0e04\\u0e38\\u0e13",
"FirstName": "Simar"
我也试过了
json_request = json.dumps(self.request_data,ensure_ascii=False).encode('utf8')
response = requests.request("POST", url, json=json_request, headers=headers)
它将json值生成为
"TitleName": "\xe0\xb8\x84\xe0\xb8\xb8\xe0\xb8\x93",
"FirstName": "Simar"
但我希望将 json 值生成为
"TitleName": "คุณ",
"FirstName": "Simar"
我们将不胜感激。提前致谢。
【问题讨论】:
-
为什么需要保持原样?我认为 Python 不会打印奇怪的字符(如表情符号),这并不意味着您不能在网站上使用它。
-
在 JSON 中,\u0e04 与 คุ 是同一个字符。 (\\u0e04 是否只是碰巧包含 JSON 的文本字符串的 Python 文字表示,可能如调试器所示?)
-
我想保持原样,因为我要访问的 API 仅适用于泰语值,而不适用于“\u0e04”或“\xe0”等文字
-
@TomBlodget 是的,我从调试器中选择了这个值
-
感谢您的解释。 \x 表示法不是有效的 JSON,但 \u 是。太糟糕了,您的客户不合规。我没有比@snakecharmerb 更好的解决方案(但其他人可能)。
标签: python json character-encoding python-requests thai