PayPal IPN POST请求编码

时间:2012-05-31 15:12:32

标签: python utf-8 paypal 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

如何解决这个问题?

2 个答案:

答案 0 :(得分: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

要修复你必须:

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

    1. 点击«我的帐户»
    2. 下的«个人资料»链接
    3. 点击右侧的“我的销售工具”
    4. 查找«贝宝按钮语言编码»链接(应位于底部)
    5. 点击«更多选项»
    6. 选择«UTF-8»并保存
    7. 取决于您的PayPal帐户的类型。希望能拯救某人和一小时的生命。

答案 1 :(得分:1)

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

要修复你必须:

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

    1. 点击«我的帐户»
    2. 下的«个人资料»链接
    3. 点击右侧的“我的销售工具”
    4. 查找«贝宝按钮语言编码»链接(应位于底部)
    5. 点击«更多选项»
    6. 选择«UTF-8»并保存
    7. 取决于您的PayPal帐户的类型。希望这会拯救一个人一小时的生命。