#python-3.x
#python-3.x
Вопрос:
Я возвращаю текстовое поле из столбца DB:
"algún nombre de juego"
когда я пытаюсь использовать этот текст в html-файле, я получаю следующую строку:
algún nombre de juego
Это происходит последовательно с любой строкой, которая не является чисто английской. Я даже пытался получать простой текст из Интернета на разных языках, и как только я вставляю их в текстовое поле html, распечатывается с неправильной кодировкой, как в примере выше.
Из документации по Юникоду для python следует, что UTF-8 должен быть способен обрабатывать практически любой символ на любом языке.
Я перепробовал много способов кодирования / декодирования, и либо возникает ошибка кодирования, либо я получаю странный символ там, где должна быть буква u с острым.
Согласно комментариям, я не использую Django или Flask. Просто берем строки из базы данных, которые могут быть на нескольких разных языках, и создаем HTML-файл для внутреннего использования.
Комментарии:
1. HTML — это не python. Вам необходимо преобразовать символы Юникода в их эквивалент HTML-сущности (
ú
становитсяamp;uacute;
)2. @PranavHosangadi, правильно ли я понимаю, что мне нужно передать строку python, которая должна быть HTML, через BeautifulSoup или что-то подобное, чтобы выполнить преобразование? Или есть лучший подход?
3. @kravb Возможно, было бы неплохо также пометить этот вопрос фреймворком, который вы используете (например, Django или Flask), чтобы получить еще несколько ответов.
4. w3.org/International/questions/qa-html-encoding-declarations
Ответ №1:
Несколько идей:
1. Не забудьте объявить кодировку.Либо:
- Вставьте a
<meta charset="utf-8">
сразу после вашего<head>
тега.или
- сделайте это в заголовке HTTP (чтобы он выглядел примерно так
Content-Type:text/html; charset=UTF-8
). Это можно сделать, изменив настройки веб-сервера или используя код на стороне сервера, если вы решите разместить страницу.
2. Убедитесь, что ваша среда IDE сохраняет файлы как UTF-8. Это будет где-то в ваших настройках и должно выполняться автоматически, но стоит проверить, не работает ли опция 1.
Надеюсь, что один из этих вариантов работает.