Я пытаюсь использовать символы utf-8 при рендеринге шаблона с помощью Jinja2. Вот как выглядит мой шаблон:
<!DOCTYPE HTML>
<html manifest="" lang="en-US">
<head>
<meta charset="UTF-8">
<title>{{title}}</title>
...
Переменная title задана примерно так:
index_variables = {'title':''}
index_variables['title'] = myvar.encode("utf8")
template = env.get_template('index.html')
index_file = open(preview_root + "/" + "index.html", "w")
index_file.write(
template.render(index_variables)
)
index_file.close()
Теперь проблема заключается в том, что myvar - это сообщение, прочитанное из очереди сообщений, и может содержать эти специальные символы utf8 (например, Séptimo Cine).
Представленный шаблон выглядит примерно так:
...
<title>S\u00e9ptimo Cine</title>
...
и я хочу, чтобы это было:
...
<title>Séptimo Cine</title>
...
Я сделал несколько тестов, но я не могу заставить это работать.
-
Я попытался установить переменную title без .encode( "utf8" ), но она выдает исключение (ValueError: ожидается объект байтов, а не объект unicode), поэтому я предполагаю, что начальное сообщение является unicode
-
Я использовал chardet.detect, чтобы получить кодировку сообщения (это "ascii" ), а затем выполнил следующее: myvar.decode( "ascii" ). encode ( "cp852" ), но заголовок все еще не отображается правильно.
-
Я также убедился, что мой шаблон является файлом UTF-8, но это не повлияло.
Любые идеи о том, как это сделать?