【问题标题】:PayPal IPN POST request encodingPayPal IPN POST 请求编码
【发布时间】:2012-06-05 20:55:27
【问题描述】:

当尝试在 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

如何解决?

【问题讨论】:

  • 如果您可以将您的解决方案转变为自我回答并接受它,那就太好了。谢谢。

标签: python utf-8 paypal paypal-ipn


【解决方案1】:

将您的“问题”编辑为一个真正的问题,我们会很高兴的!


由于某些不虔诚的原因,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. 在 «Selling Preferences» 列中找到 «Language Encoding»
  3. 点击«更多选项»
  4. 选择«UTF-8»并保存

或者

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

取决于您的 PayPal 帐户类型。希望这能挽救一个人和一个小时的生命。

【讨论】:

  • 没问题。希望它现在看起来更好。
【解决方案2】:

由于某些不虔诚的原因,PayPal 仍未进入 21 世纪,并且默认情况下仍使用 Windows-1252 编码。这可能会产生一些问题,因为现在期望 unicode 成为一种编码选择是很合理的。

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

  1. 点击“我的帐户”下的“个人资料”链接
  2. 在 «Selling Preferences» 列中找到 «Language Encoding»
  3. 点击«更多选项»
  4. 选择«UTF-8»并保存

或者

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

取决于您的 PayPal 帐户类型。希望这可以挽救某人一小时的生命。

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 2014-10-28
    • 2013-08-17
    • 2015-11-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2014-02-02
    相关资源
    最近更新 更多