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,

Другие вопросы по тегам