UnicodeDecodeError с Python 2.7 и suds 4.0 с немецким языком
У меня есть проект python-django, и я пытаюсь сохранить немецкий и итальянский в моей базе данных Postgresql, которая используется только этим проектом. Я пытаюсь отправить результаты, которые я хочу сохранить в базе данных через HTML-форму, которую я добавил:
accept-charset="UTF-8"
Результаты отправляются на мой views.py, в который я добавил сверху
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Я также пытался кодировать, декодировать внутри views.py в utf-8, ISO-5589-1, latin-1, но это не работает. Я считаю, что ошибка связана с этой статьей, но я не понимаю решения, которое, по их словам, исправлено, но все еще не работает для меня.
https://fedorahosted.org/suds/ticket/361
Это моя трассировка:
Environment:
Request Method: POST
Django Version: 1.4
Python Version: 2.7.2
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'ui')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.locale.LocaleMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/hatzimin/web/indivo_ui_server/apps/problems/views.py" in new_problem
281. content_type='application/xml')
File "/home/hatzimin/web/indivo_ui_server/indivo_client_py/client.py" in __call__
154. return func(self.url, *args, **kwargs)
File "/home/hatzimin/web/indivo_ui_server/indivo_client_py/client.py" in post
68. return self.request(self.api_base+uri, uri_params, method="POST", body=body, headers=headers)
File "/home/hatzimin/web/indivo_ui_server/indivo_client_py/client.py" in request
132. return super(IndivoClient, self).request(uri, *args, **kwargs)
File "/home/hatzimin/web/indivo_ui_server/indivo_client_py/oauth2/__init__.py" in request
697. connection_type=connection_type)
File "/home/hatzimin/web/indivo_ui_server/indivo_client_py/oauth2/httplib2/__init__.py" in request
1544. (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/home/hatzimin/web/indivo_ui_server/indivo_client_py/oauth2/httplib2/__init__.py" in _request
1294. (response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/home/hatzimin/web/indivo_ui_server/indivo_client_py/oauth2/httplib2/__init__.py" in _conn_request
1231. conn.request(method, request_uri, body, headers)
File "/usr/lib/python2.7/httplib.py" in request
955. self._send_request(method, url, body, headers)
File "/usr/lib/python2.7/httplib.py" in _send_request
989. self.endheaders(body)
File "/usr/lib/python2.7/httplib.py" in endheaders
951. self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py" in _send_output
809. msg += message_body
Exception Type: UnicodeDecodeError at /apps/problems/problems/new
Exception Value: 'ascii' codec can't decode byte 0xc3 in position 207: ordinal not in range(128)
1 ответ
Наверное suds
возвращает строку типа 'str'
закодировано в utf-8
, Вы должны преобразовать эту строку в тип 'unicode'
прежде чем работать с ним.
Попробуйте вызвать django.utils.encoding.smart_unicode
на нем сразу после получения строки из suds
,