ich diesen Fehler ständig mit mako erhalten:wie mit Unicode in Mako umgehen?
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 6: ordinal not in range(128)
I mako in jeder möglichen Weise verwende ich Unicode gesagt habe:
mylookup = TemplateLookup(
directories=['plugins/stl/templates'],
input_encoding='utf-8',
output_encoding='utf-8',
default_filters=['decode.utf8'],
encoding_errors='replace')
self.template = Template(self.getTemplate(), lookup=mylookup,
module_directory=tempfile.gettempdir(),
input_encoding='utf-8',
output_encoding='utf-8',
default_filters=['decode.utf8'],
encoding_errors='replace')
html = self.template.render_unicode(data=self.stuff)
Alle meine Template-Dateien beginnt mit:
## -*- coding: utf-8 -*-
und in ihnen alle Zeichenfolgen mit Präfix "u". Ich weiß, dass der Parameter self.stuff Unicode-Strings enthält, aber die Art, wie ich die Mako-Objekte instanziiere, sollte sich darum kümmern (sonst, wofür sind diese Argumente gut?). Gibt es etwas, was ich vergessen habe?
Eine weitere Frage: Was ist der Sinn von encoding_errors = 'replace'?
= EDIT = verließ ich nur ein einziges Unicode-String und das ist die Traceback:
Traceback (most recent call last):
File "C:\My Dropbox\src\flucso\src\plugins\stl\main.py", line 240, in updateView
flags=self.makoflags)
File "C:\Python26\lib\site-packages\mako-0.3.4-py2.6.egg\mako\template.py", line 198, in render_unicode
as_unicode=True)
File "C:\Python26\lib\site-packages\mako-0.3.4-py2.6.egg\mako\runtime.py", line 403, in _render
_render_context(template, callable_, context, *args, **_kwargs_for_callable(callable_, data))
File "C:\Python26\lib\site-packages\mako-0.3.4-py2.6.egg\mako\runtime.py", line 434, in _render_context
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File "C:\Python26\lib\site-packages\mako-0.3.4-py2.6.egg\mako\runtime.py", line 457, in _exec_template
callable_(context, *args, **kwargs)
File "memory:0x41317f0", line 89, in render_body
File "C:\Python26\lib\site-packages\mako-0.3.4-py2.6.egg\mako\runtime.py", line 278, in <lambda>
return lambda *args, **kwargs:callable_(self.context, *args, **kwargs)
File "FriendFeed_mako", line 49, in render_inlist_entry
File "C:\Python26\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u263c' in position 8: ordinal not in range(128)
das ist schön: der Standard ('Unicode') Handler, wie diese zu ersetzen habe ich loswerden all Code einen einzelnen $ {unicode_string_value.decode ließe meine Vorlagen ('utf-8')} und , erraten Sie, was? mako erhöhen noch die Ausnahme ... –
zeigen Sie bitte die Zurückverfolgungs –
oh und ich vergaß zu erwähnen, dass, wenn ich/debug die Anwendung in Eclipse + PyDev laufen, mako keine Fehler meldet und die resultierende HTML ist in Ordnung. Starten von einer Konsole oder einer Verknüpfung führt zu dem Unicode-Fehler. –