Я пытаюсь заставить Мако визуализировать некоторую строку с символами Юникода:
tempLook=TemplateLookup(..., default_filters=[], input_encoding='utf8',output_encoding='utf-8', encoding_errors='replace')
...
print sys.stdout.encoding
uname=cherrypy.session['userName']
print uname
kwargs['_toshow']=uname
...
return tempLook.get_template(page).render(**kwargs)
Связанный файл шаблона:
...${_toshow}...
И вывод:
UTF-8
Deşghfkskhü
...
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 1: ordinal not in range(128)
Я не думаю, что есть какая-то проблема с самой строкой, поскольку я могу напечатать ее очень хорошо.
Хотя я играл (много) с параметрами input/output_encoding
и default_filters
, этовсегда жалуется на неспособность декодировать / кодировать с помощью кодека ascii.
Поэтому я решил попробовать пример, найденный в документации , и следующее работает «лучше»:
input_encoding='utf-8', output_encoding='utf-8'
#(note : it still raised an error without output_encoding, despite tutorial not implying it)
С
${u"voix m’a réveillé."}
И результатом является
voix mâ�a réveillé
Я просто не понимаю, почему это не работает.«Волшебный кодировочный комментарий» тоже не работает.Все файлы имеют кодировку UTF-8.
Я часами безрезультатно, я что-то упустил?
Обновление:
Теперь у меня есть более простой вопрос:
Теперь, когда все переменные являются Unicode, как я могу заставить Mako отображать строки Unicode без применения чего-либо?Передача пустого фильтра / render_unicode () не помогает.