首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask-RESTX -响应正文中的阿拉伯语文本

Flask-RESTX -响应正文中的阿拉伯语文本
EN

Stack Overflow用户
提问于 2020-09-30 20:59:37
回答 1查看 79关注 0票数 0

我正在使用swagger、flask-restx运行rest api

然而,我的问题是在swagger UI中(http://127.0.0.1:5000/ ?)在测试端点时,响应正文中的阿拉伯文本将作为扩展字符返回,这与使用postman时出现的问题相同( \\u0645\\u0635\\u0646\\u0648\\u0639 \\u0645\

当使用sublime文本请求包或者只是在浏览器中输入URL (我有一个jsonify扩展)时,不会出现这个问题。

以下是我的代码的简短版本

代码语言:javascript
复制
@app.route('/products')
def products():
  # logic with database

  return JSONEncoder().encode(products)

name_space = api.namespace('product', description='Product API')
@name_space.route("/")
class ProductClass(Resource):
  def get(self):
    return make_response(products())

当我调用端点products时,它工作得很好,但当我调用product时,它就不行了。

EN

回答 1

Stack Overflow用户

发布于 2020-10-01 02:02:50

在Python中定义以下函数:

代码语言:javascript
复制
def inverse_repr(a_string):
    a_string = repr(a_string)
    a_string = a_string.replace('\\\\','\\')
    # encode/decode stuff
    return a_string.strip("'").encode().decode("unicode-escape")

示例用法:

代码语言:javascript
复制
print( inverse_repr('\\u0645\\u0635\\u0646\\u0648\\u0639 \\u0645') )
print( inverse_repr('\\x43\\x69\\x74\\x72\\x6f\\xeb\\x6e') )
print( inverse_repr('d\\xE9j\\xE0 vu') )
print( inverse_repr('\\U0001F5B6 Printer Icon') )

结果:

代码语言:javascript
复制
مصنوع م
Citroën
déjà vu
? Printer Icon
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64138129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档