Flask-RESTX - арабский текст в теле ответа

Я запускаю api отдыха с swagger, flask-restx

Однако моя проблема в том, что в пользовательском интерфейсе swagger (http://127.0.0.1:5000/?) При тестировании конечной точки арабский текст в теле ответа возвращается в виде исключенных символов \\u0645\\u0635\\u0646\\u0648\\u0639 \\u0645\Та же проблема при использовании почтальона

Проблема не возникает при использовании пакета запроса возвышенного текста или при простом вводе URL-адреса в браузере (у меня есть расширение jsonify)

Вот сокращенная версия моего кода

@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 Это не.

1 ответ

Определите в Python следующую функцию:

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")

Пример использования:

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') )

Результат:

مصنوع م
Citroën
déjà vu
 Printer Icon
Другие вопросы по тегам