UnicodeEncodeError в шаблоне Мако - PullRequest
3 голосов
/ 21 декабря 2010

У меня есть следующие файлы

dummy.py

#!c:/Python27/python.exe -u

from mako import exceptions
from mako.template import Template

print "Content-type: text/html"
print

#VARIABLE = "WE" 
VARIABLE = "我们"
template = Template(filename='../template/dummy.html', output_encoding='utf8')
try:
    print template.render(VARIABLE=VARIABLE)
except:
    print exceptions.html_error_template().render()

dummy.html (Сохранено в UTF-8формат)

hello world
哈罗世界
${VARIABLE}

Я ссылался на инструкцию от http://www.makotemplates.org/docs/unicode.html

Однако я все еще получаю ошибку

UnicodeDecodeError: 'кодек ascii' может 't декодировать байт 0xe6 в позиции 0: порядковый номер не в диапазоне (128)

Что-то, что я пропустил?

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010
template = Template(filename='../template/dummy.html', default_filters=['decode.utf8'], input_encoding='utf-8', output_encoding='utf-8')
2 голосов
/ 21 декабря 2010

Да, потому что вы пытаетесь отобразить его в ASCII, который не работает. Вы должны сказать, какое output_encoding использовать:

Template(filename='../template/dummy.html', output_encoding='utf8')

И, пожалуйста, не делайте голых исключений. Добавьте, какие исключения вы ожидаете отловить.

...