tôi liên tục nhận được lỗi này bằng mako:làm thế nào để đối phó với unicode trong mako?
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 6: ordinal not in range(128)
Tôi đã nói với mako Tôi đang sử dụng unicode trong bất kỳ cách nào có thể:
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)
Tất cả các file mẫu của tôi bắt đầu với:
## -*- coding: utf-8 -*-
và bên trong chúng, tất cả các chuỗi chi phí đều có tiền tố là "u". Tôi biết tham số self.stuff có chứa các chuỗi unicode, nhưng cách tôi khởi tạo các đối tượng mako sẽ quan tâm đến nó (nếu không thì những đối số đó là gì tốt?). Có điều gì tôi quên làm không?
Một câu hỏi nữa: điểm của encoding_errors = 'replace' là gì?
= EDIT = tôi rời chỉ là một chuỗi unicode đơn và đây là 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)
này là tốt đẹp: tôi đã thoát khỏi mã để lại một $ đơn {unicode_string_value.decode tất cả các mẫu của tôi ('utf-8')} và đoán cái gì? mako vẫn tăng ngoại lệ ... –
xin vui lòng hiển thị các traceback –
oh và tôi quên đề cập đến rằng nếu tôi chạy/gỡ lỗi ứng dụng bên trong Eclipse + PyDev, mako không báo cáo bất kỳ lỗi nào và kết quả html là ok. khởi chạy từ bảng điều khiển hoặc lối tắt dẫn đến lỗi unicode. –