PayPal IPN POST请求编码

dsx*_*dsx 10 python paypal utf-8 paypal-ipn

当尝试在Pyramid中使用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
Run Code Online (Sandbox Code Playgroud)

如何解决?

Ste*_*rne 5

编辑你的"问题"是一个真实的问题,我们会很高兴!


对于一些不道德的原因,PayPal仍然不是21世纪,默认情况下仍然使用Windows-1252编码.这可能会产生一些问题,因为现在期望unicode成为一种选择的编码是非常合理的.

这可能导致使用Pyramid时跟踪追溯:

[...]
 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
Run Code Online (Sandbox Code Playgroud)

要解决这个问题,你必须:

  1. 点击«我的帐户»下的«个人资料»链接
  2. 在«销售偏好»列中找到«语言编码»
  3. 点击«更多选项»
  4. 选择«UTF-8»并保存

要么

  1. 点击«我的帐户»下的«个人资料»链接
  2. 点击右侧的«我的销售工具»
  3. 找到«贝宝按钮语言编码»链接(应位于底部)
  4. 点击«更多选项»
  5. 选择«UTF-8»并保存

取决于您的PayPal帐户的类型.希望能拯救某人和一小时的生命.