У меня есть webhook, разработанный с Flask -RESTful, который получает несколько параметров с помощью POST. Одним из параметров является не-Unicode строка, закодированная в cp1251 .
Не могу найти способ правильно проанализировать этот аргумент, используя reqparse
.
Вот фрагмент моего кода:
parser = reqparse.RequestParser()
parser.add_argument('text')
msg = parser.parse_args()
Затем я пишу msg
в текстовый файл, и он выглядит так:
{"text": "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd !\n\n\ufffd\ufffd\ufffd\ufffd\ufffd\n\n-- \n\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd."}
Как видите, Flask каким-то образом заменяет все символы кириллицы c на \ufffd
. В то же время не-кириллические c символы, такие как !
или \n
, обрабатываются правильно.
Что я могу сделать, чтобы посоветовать RequestParser с кодировкой строки?
Здесь мой код для записи текста на диск:
f = open('log_msg.txt', 'w+')
f.write(json.dumps(msg))
f.close()
Я попытался f = open('log_msg.txt', 'w+', encoding='cp1251')
с тем же результатом.
Затем я попытался
f = open('log_msg_ascii.txt', 'w+')
f.write(ascii(json.dumps(msg)))
Также, без разницы.
Итак, я почти уверен, что RequestParser()
пытается быть слишком умным и не может понять ввод не-Unicode.
Спасибо!