У меня есть сохраненный HTML-файл, который я хочу открыть из моего внешнего интерфейса.Почему Flask send_file() испортил кодировку
Веб-страница имеет японские иероглифы на нем и имеет следующий метатег <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
Если я перетащить файл в любой из Chrome, IE или Firefox, страница открывается правильно. Однако, когда я использую Flask для получения файла, кодировка перепутана, и все японские символы отображаются как символ..
В моем webapp я использую маршрут Flask, чтобы получить файл и отправить его на мой передний конец. Так что в моем переднем конце у меня есть следующий тег
<a href="/getFile/the_saved_file.html" target="_blank"></a>
И в моей Колбе приложении у меня есть следующий маршрут:
@app.route('/getFile/<file>/')
def get_file(file):
file_path = os.path.join(FILE_STORAGE_PATH, file)
return send_file(file_path)
Когда я нажимаю <a>
ссылки, файл открывается в индивидуальном вкладка.
Как я могу заставить Flask вести себя так же, как перетаскивание, когда дело доходит до сохранения кодировки?
У меня нет для вас решения, но проблема в том, что 'send_file()' автоматически определяет тип содержимого и поставляет заголовок 'Content-Type: text/html; кодировка = UTF-8'. Как только кодировка определена в заголовках, она не может быть переопределена мета http-equiv. –
Как насчет попытки «открыть» и прочитать содержимое файла, а затем вернуть 'contents.encode ('UTF-8')'? – YellowShark