Всем привет!
Пишу первую поделку на Flask. Раньше доводилось писать только админские скрипты.
Есть файл (UTF-8 без BOM) с вьетнамскими словами, его надо некоторым образом распарсить и отдать страничку, использую шаблон. Беда в том, что если прочитать из файла «Việt Nam», то на странице вместо я получаю «ViГЄМЈt Nam». Всё не-ASCII превращается в кашу.
Однако, если прямо в коде присвоить не-ASCII текст переменной, а потом переменную передать в шаблон, то всё хорошо. Между переменными есть разница:
app.logger.info(fromfile)
[...] INFO in views: Việt Nam
# так на страничке каша^^^
# а это работает:
definedincode = "Việt Nam"
app.logger.info(definedincode)
[...] INFO in views: Vi\xea\u0323t Nam\u0300
Тексту из файла можно сделать encode/decode:
app.logger.info(fromfile.encode('unicode_escape').decode("utf-8"))
[...] INFO in views: Vi\u0413\u0404\u041c\u0408t Nam
Но на работающий вариант всё равно не похоже. В этом случае на страничке отдаётся сырое необработанное «Vi\u0413\u0404\u041c\u0408t Nam».
Помогите с магией.