Tôi thấy rất nhiều câu hỏi liên quan đến điều này nhưng tôi không thể tìm ra giải pháp.UnicodeEncodeError: 'ascii' codec không thể mã hóa các ký tự ở vị trí 1-4: thứ tự không nằm trong phạm vi (128)
Đây là trên Django 1.4 và Python 2.7.
data
là từ điển chứa ký tự UTF8. Xem dòng này:
render_to_response('application/app.html', data, context_instance=RequestContext(request))
Template được kết xuất mà kết quả đầu ra giá trị từ data
đó.
Tại sao nó phát nổ và tôi có thể làm gì để sửa lỗi này?
EDIT: Sau khi đào xung quanh, một phần của số đó data
chứa lxml.objectify.ObjectifiedElement
. Về cơ bản một phần tử XML có thể được truy vấn như một từ điển thông thường. Giá trị mà nó tạo ra dường như chuỗi unicode thích hợp như thế này: u'\xae\u2020\xa5\xa8\u02c6\xf8'
Dưới đây là toàn bộ stacktrace:
File "/web/mysite/env/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/web/mysite/current/api/views.py", line 163, in invoice
return render_to_response('application/app.html', data, context_instance=RequestContext(request))
File "/web/mysite/env/lib/python2.7/site-packages/django/shortcuts/__init__.py", line 20, in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/loader.py", line 176, in render_to_string
return t.render(context_instance)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 140, in render
return self._render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 134, in _render
return self.nodelist.render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 823, in render
bit = self.render_node(node, context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 837, in render_node
return node.render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/loader_tags.py", line 123, in render
return compiled_parent._render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 134, in _render
return self.nodelist.render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 823, in render
bit = self.render_node(node, context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 837, in render_node
return node.render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 823, in render
bit = self.render_node(node, context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 837, in render_node
return node.render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/defaulttags.py", line 281, in render
return nodelist.render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 823, in render
bit = self.render_node(node, context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 837, in render_node
return node.render(context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 880, in render
return _render_value_in_context(output, context)
File "/web/mysite/env/lib/python2.7/site-packages/django/template/base.py", line 858, in _render_value_in_context
value = force_unicode(value)
File "/web/mysite/env/lib/python2.7/site-packages/django/utils/encoding.py", line 74, in force_unicode
s = unicode(str(s), encoding, errors)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-4: ordinal not in range(128)
File "/web/mysite/current/api/views.py", dòng 163, trong hóa đơn –