在路径

时间:2018-03-12 15:27:53

标签: python flask flask-restful

我使用Flask运行RESTful服务并发现,当值作为参数传递时,Unicode字符未正确传递。

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

...

@app.route('/search/<query>')
def Search(query):
    result = { "result": query }
    return jsonify(result), 200

当我使用带有URL的REST客户端调用服务时......

http://localhost/search/zürich

...输出如下:

{
    "result": "z\ufffdrich"
}

对查询字符串进行硬编码时,如下所示:

@app.route('/search/<query>')
def Search(query):
    result = { "result": "Zürich" }
    return jsonify(result), 200

...输出正确编码:

{
    "result": "Zürich"
}

所以我深入研究了Flask config options设置,并将options参数'JSON_AS_ASCII'设置为false。

  

默认情况下,Flask将对象序列化为ascii编码的JSON。如果设置为False,Flask将不会编码为ASCII并输出字符串as-is并返回unicode字符串。 jsonify将自动将其编码为utf-8,然后进行传输。

这是Flask中的错误还是我在Flask配置设置中遗漏了什么?

1 个答案:

答案 0 :(得分:0)

此文档表示如果

app.config['JSON_AS_ASCII'] = False

输出将是unicode。

所以它应设置为True以获得ASCII输出,这就是你想要的。