今天在用flask框架写http服务的时候,发现调用flask的jsonify函数得到的http回复包中的字文是用unicode-escape string表示的。如下:
u5b57\u5173\u6ce8\u6211\u4eec\uff01
有些RESTful工具能够把unicode-escape字符串转成utf8,能够正常显示出中文。但很多编辑器和其它工具只能显示原本的unicode转义字符串,大大妨碍调试。解决方案是用flask的另一个函数:make_response解决这个问题。代码如下:
from flask import Flask, jsonify, make_response
def mk_utf8resp(js):
'''
传入一个字典,返回一个json格式的http回复。
'''
resp = make_response(json.dumps(js, ensure_ascii=False))
resp.headers['Content-Type'] = 'application/json'
return resp
把jsonify(js)换成mk_utf8resp(js),问题解决。