Только учусь делать сайт с помощью python
. И решил сделать страницу с русским языком, но вышли кракозябры:
Понимаю что проблема с кодировкой(скорее всего), вот только не пойму где и как исправить...
#!/Python380/python
print("Content-type: text / html")
print(
"""
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Проба с Python</title>
</head>
<body>
<h1><b>Привет</b></h1>
</body>
</html>
"""
)
Кодировка файла python:
Как выяснилось в комментариях, автор вопроса использует Windows 10 для запуска кода. Так как канал stdout
у Windows работает на кодировке cp866
(cp1251
- если была перенастроена кодовая страница), передавая текст страницы через print
, вы приводите его к системной кодировке. Именно из-за несоответствия содержимого тега meta
и кодировки, в которой код страницы попадает на сервер, вы и получаете кракозябры.
Как один из вариантов решения данной проблемы, могу посоветовать записывать код страницы в какой-то файл на диске с указанием целевой кодировки. Делается это при открытии файла, например так:
raw_html = """
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Проба с Python</title>
</head>
<body>
<h1><b>Привет</b></h1>
</body>
</html>
"""
with open('path\to\file.html', mode='w', encoding='utf-8') as page_file:
page_file.write(raw_html)
На Хабре дали такой ответ:
import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
После него всё стало работать
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Нужно распарсить html-документ и найти все начальные теги <div>, которые содержат определенное слово, но при этом исключить строки содержащие...