2012-05-31 2 views
10

При попытке работать с полезной нагрузкой PayPal IPN POST в пирамиде (и, возможно, другие) я получаю ошибки декодирования:PayPal IPN POST кодирование запроса

[...] 
File "./project/views.py", line 716, in paypal_ipn 
    message = request.POST 
    File "build/bdist.linux-x86_64/egg/webob/request.py", line 745, in POST 
    File "build/bdist.linux-x86_64/egg/webob/multidict.py", line 74, in from_fieldstorage 
    File "build/bdist.linux-x86_64/egg/webob/multidict.py", line 67, in <lambda> 
    File "/sites/ts/lib64/python2.6/encodings/utf_8.py", line 16, in decode 
    return codecs.utf_8_decode(input, errors, True) 
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf3 in position 5: invalid continuation byte 

Как исправить это?

+5

Было бы здорово, если бы вы могли перенести свое решение на самостоятельный ответ и принять его. Благодарю. – Kev

ответ

4

Редактируйте свой «вопрос», чтобы быть настоящим вопросом, и мы будем рады!


По какой-то причине безбожной PayPal еще не в 21-м веке, и до сих пор использует Windows-1252 кодировку по умолчанию. Это может создать некоторые проблемы, поскольку вполне разумно ожидать, что unicode станет кодировкой выбора в наши дни.

Это может привести к чему-то вроде следующих отслеживающий при использовании пирамиды:

[...] 
File "./project/views.py", line 716, in paypal_ipn 
    message = request.POST 
    File "build/bdist.linux-x86_64/egg/webob/request.py", line 745, in POST 
    File "build/bdist.linux-x86_64/egg/webob/multidict.py", line 74, in from_fieldstorage 
    File "build/bdist.linux-x86_64/egg/webob/multidict.py", line 67, in <lambda> 
    File "/sites/ts/lib64/python2.6/encodings/utf_8.py", line 16, in decode 
    return codecs.utf_8_decode(input, errors, True) 
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf3 in position 5: invalid continuation byte 

Чтобы исправить это, вы должны либо:

  1. Нажмите на «Профиль» ссылки в разделе «Мой счет»
  2. В столбце «Selling Preferences» укажите «Кодировка языка»
  3. Нажмите «« «« «Еще» »
  4. Выберите «UTF-8» и сохранить

Или

  1. Нажмите на «Профиль» ссылка под «Моя учетная запись»
  2. Нажмите на «Мои продажи инструментов» на право
  3. Найти «PayPal кодирования кнопка язык» ссылка (должна быть в нижней части)
  4. Нажмите на «Дополнительные параметры»
  5. Выберите «UTF-8» и сохранить

В зависимости от типа вашей учетной записи PayPal. Надеюсь, что это спасет кого-то и час жизни.

+0

Нет проблем. Надеюсь, теперь это выглядит лучше. – dsx

1

По какой-то нечестивой причине PayPal по-прежнему не в 21 веке и по-прежнему использует кодировку Windows-1252 по умолчанию. Это может создать некоторые проблемы, поскольку вполне разумно ожидать, что unicode станет кодировкой выбора в наши дни.

Чтобы исправить это, вы должны либо:

  1. Нажмите на «Профиль» ссылки в разделе «Мой счет»
  2. В «Selling Preferences» колонки найти «кодировку»
  3. Нажмите на «Далее параметры »
  4. Выберите«UTF-8»и сохранить

Или

  1. Нажмите на «Профиль» ссылку под «Мой счет»
  2. Нажмите на «Мои продажи инструментов» на право
  3. Поиск «Кодирование кнопки PayPal язык» ссылка (должна быть в нижней части)
  4. Нажмите на «Дополнительные параметры»
  5. Выберите «UTF-8» и сохранить

в зависимости от типа вашего счета PayPal. Надеюсь, это спасет кого-то час жизни.