Знаки вопроса на странице html, сгенерированной с помощью python
Вообщем, единственная проблема в том, что на странице html, которую генерирует код python, знаки вопроса. ( Кодировка utf-8 поставлена ) Вот коды:
1)generate_index.py
from datetime import datetime as dt
from horoscope import generate_prophecies
#body = generate_body(header="Гороскоп на 2012-12-12", paragraphs=generated_prophecies)
def generate_head(title):
head = "<meta charset='utf-8'>" + "<title>" + title + "</title>"
return "<head>" + head + "</head>"
def generate_page(head, body):
page = "<html>" + head + body + "</html>"
return page
def generate_body(header, paragraphs):
body = "<h1>" + header + "</h1>"
for p in paragraphs:
body = body + "<p>" + p + "</p>"
return "<body>" + body + "</body>"
def save_page(title, header, paragraphs, output="index.html"):
fp = open(output, "w")
today = dt.now().date()
page = generate_page(
head= generate_head(title),
body= generate_body(header=header, paragraphs=paragraphs)
)
print(page, file=fp)
fp.close()
body = generate_body(header="Гороскоп на 2012-12-12", paragraphs=generate_prophecies())
today = dt.now().date()
save_page(
title="Гороскоп на сегодня",
header="Что день " + str(today) + " готовит",
paragraphs=generate_prophecies()
)
horoscope.py
import randomtimes = ["утром", "днём", "вечером", "ночью", "после обеда", "перед сном"] advices = ["ожидайте", "предостерегайтесь", "будьте открыты для"] promises = ["гостей из забытого прошлого", "встреч со старыми знакомыми", "неожиданного праздника", "приятных перемен"]
def generate_prophecies(total_num=5, num_sentences=3): prophecies = []
i = 0 while i < total_num: j = 0 forecast = "" while j < num_sentences: t = random.choice(times) a = random.choice(advices) p = random.choice(promises) full_sentence = t.title() + " " + a + " " + p + "." if j != num_sentences - 1: full_sentence = full_sentence + " " forecast = forecast + full_sentence j = j + 1 prophecies.append(forecast) i = i + 1 return prophecies
А в самом файле index.html вот шо:
Ãîðîñêîï íà ñåãîäíÿ×òî äåíü 2020-06-21 ãîòîâèò
Âå÷åðîì ïðåäîñòåðåãàéòåñü ïðèÿòíûõ ïåðåìåí. Íî÷üþ áóäüòå îòêðûòû äëÿ ïðèÿòíûõ ïåðåìåí. Íî÷üþ ïðåäîñòåðåãàéòåñü âñòðå÷ ñî ñòàðûìè çíàêîìûìè.
Äí¸ì îæèäàéòå ïðèÿòíûõ ïåðåìåí. Ïåðåä Ñíîì áóäüòå îòêðûòû äëÿ ãîñòåé èç çàáûòîãî ïðîøëîãî. Ïîñëå Îáåäà áóäüòå îòêðûòû äëÿ íåîæèäàííîãî ïðàçäíèêà.
Íî÷üþ áóäüòå îòêðûòû äëÿ íåîæèäàííîãî ïðàçäíèêà. Âå÷åðîì áóäüòå îòêðûòû äëÿ ãîñòåé èç çàáûòîãî ïðîøëîãî. Óòðîì ïðåäîñòåðåãàéòåñü âñòðå÷ ñî ñòàðûìè çíàêîìûìè.
Íî÷üþ îæèäàéòå ïðèÿòíûõ ïåðåìåí. Ïîñëå Îáåäà áóäüòå îòêðûòû äëÿ ïðèÿòíûõ ïåðåìåí. Ïîñëå Îáåäà îæèäàéòå ïðèÿòíûõ ïåðåìåí.
Íî÷üþ áóäüòå îòêðûòû äëÿ ïðèÿòíûõ ïåðåìåí. Äí¸ì áóäüòå îòêðûòû äëÿ ãîñòåé èç çàáûòîãî ïðîøëîãî. Óòðîì ïðåäîñòåðåãàéòåñü âñòðå÷ ñî ñòàðûìè çíàêîìûìè.
Честно говоря, у меня даже нет идей, я код просмотрел несколько раз..
Ответы (1 шт):
При открытии файла на запись нужно указать ту же кодировку, что указана в теге <meta charset='...'>, в данном случае - utf-8:
def save_page(title, header, paragraphs, output="index.html"):
fp = open(output, "w", encoding='utf-8')
today = dt.now().date()
page = generate_page(
head= generate_head(title),
body= generate_body(header=header, paragraphs=paragraphs)
)
print(page, file=fp)
fp.close()