Python中如何在HTTP POST响应中获取非转义字符
解决GraphQL API返回结果中Unicode转义字符显示问题
你遇到的问题核心在于json.dumps()的默认行为:当ensure_ascii=True(默认值)时,所有非ASCII字符会被自动转换为\uXXXX格式的Unicode转义序列。以下是具体解决方案:
方案1:修改json.dumps()的ensure_ascii参数
直接在json.dumps()中设置ensure_ascii=False,让输出保留原始Unicode字符:
import json import requests response = requests.post(url, json={'query': query}) data = response.json() # 设置ensure_ascii=False,避免非ASCII字符被转义 result = json.dumps(data, indent=2, ensure_ascii=False)
方案2:确保响应编码正确
如果API响应的Content-Type头未正确声明编码,requests可能会用错误的编码解析响应,导致字符异常。可以手动指定响应编码:
import json import requests response = requests.post(url, json={'query': query}) # 手动指定响应编码为UTF-8 response.encoding = 'utf-8' data = response.json() result = json.dumps(data, indent=2, ensure_ascii=False)
为什么curl能正常显示?
curl会直接按照响应的编码解析并输出原始字符,不会像json.dumps()默认那样对非ASCII字符进行转义处理,因此能显示实际字符。
内容的提问来源于stack exchange,提问作者Georgy Nevsky
相关产品推荐
相关产品推荐

