2010-12-21 12 views
2

Ich habe die folgenden DateienUnicodeEncodeError in Mako Vorlage

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 (in UTF-8-Format gespeichert)

hello world 
哈罗世界 
${VARIABLE} 

Ich hatte auf die Anweisung vonverwiesen

Allerdings bekomme ich immer noch Fehler

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)

Alles, was ich verpasst habe?

Antwort

4
template = Template(filename='../template/dummy.html', default_filters=['decode.utf8'], input_encoding='utf-8', output_encoding='utf-8') 
2

Ja, weil Sie versuchen, es in ASCII zu rendern, was nicht funktioniert. Sie müssen sagen, was output_encoding zu verwenden ist:

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

Und bitte nicht bare Ausnahmen. Fügen Sie hinzu, welche Ausnahmen Sie erwarten.

+0

Entschuldigung. Ich habe meine Problemaussage nicht genau gemacht. Ich formuliere es, das Problem liegt in der Analyse der Variablen. –

+0

@Yan Check CHEOK: Das ist, weil Sie nicht Unicode für Ihre Variablen verwenden. Ändere '" 我们 "' zu 'u" 我们 "' und du bist im Geschäft. –