Python 如何从内容类型中避免charset=utf-8?
在响应中返回JSON数据是一种常见情况,Python 如何从内容类型中避免charset=utf-8?,python,json,aiohttp,Python,Json,Aiohttp,在响应中返回JSON数据是一种常见情况,aiohttp.web提供了返回JSON的快捷方式–aiohttp.web.JSON\u response(): 快捷方式方法返回aiohttp.web.Response实例,因此我们可以在从处理程序返回之前设置cookies 但是我的curl请求返回我内容类型:application/json;charset=utf-8,但我只需要application/json,如何避免charset=utf-8?为什么要在内容类型中避免charset=utf-8?如
aiohttp.web
提供了返回JSON的快捷方式–aiohttp.web.JSON\u response()
:
快捷方式方法返回aiohttp.web.Response
实例,因此我们可以在从处理程序返回之前设置cookies
但是我的curl请求返回我
内容类型:application/json;charset=utf-8
,但我只需要application/json
,如何避免charset=utf-8
?为什么要在内容类型中避免charset=utf-8
?如果未指定,则自开始,回退(默认值)将为ISO-8859-1
您的问题的实际答案是:当前的aiohttp版本不支持使用json\u response
快捷方式函数更改字符集。即使不指定字符集而直接使用aiohttp.web.Response
,也会将charset=utf8
添加到响应的内容类型中。您可以更改字符集,但不能忽略它(除非aiohttp.web.Response的text
参数设置为None)
要使用json\u response
更改字符集,可以执行以下操作:
web.json_response(
data,
content_type=None,
headers={aiohttp.hdrs.CONTENT_TYPE: 'application/json; charset=ISO-8859-1'},
)
或者使用functools.partial
来避免每次重复此长函数调用:
my_json_resp = partial(
web.json_response,
content_type=None,
headers={aiohttp.hdrs.CONTENT_TYPE: 'application/json; charset=ISO-8859-1'},
)
# later in your app
return my_json_resp(data)
您可以查看json\u response
和response的源代码。\uuuuu init\uuuu
,自己检查一下
my_json_resp = partial(
web.json_response,
content_type=None,
headers={aiohttp.hdrs.CONTENT_TYPE: 'application/json; charset=ISO-8859-1'},
)
# later in your app
return my_json_resp(data)