Je reçois constamment cette erreur en utilisant mako:comment faire face à unicode dans mako?
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 6: ordinal not in range(128)
Je l'ai dit Mako J'utilise unicode dans toutes les manières possibles:
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)
Tous mes fichiers de modèle commence par:
## -*- coding: utf-8 -*-
et, à l'intérieur, toutes les chaînes coûteuses sont préfixées avec "u". Je sais que le paramètre self.stuff contient des chaînes unicode, mais la façon dont j'instancie les objets mako devrait en tenir compte (sinon à quoi servent ces arguments?). Y a-t-il quelque chose que j'ai oublié de faire?
Encore une question: quel est le point de encoding_errors = 'replace'?
= EDIT = je suis parti une seule chaîne de caractères Unicode, ce qui est le retraçage:
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)
c'est agréable: je me suis débarrassé de tous mes modèles de code en laissant un seul $ {unicode_string_value.decode ('utf-8')} et , devine quoi? mako soulève toujours l'exception ... –
s'il vous plaît montrer le retraçage –
oh et j'ai oublié de mentionner que si je cours/débogue l'application dans Eclipse + PyDev, mako ne signale aucune erreur et le html résultant est ok. le lancement à partir d'une console ou d'un raccourci entraîne l'erreur Unicode. –