10

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

如何解决?

4

2 回答 2

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. 在 «Selling Preferences» 列中找到 «Language Encoding»
  3. 点击«更多选项»
  4. 选择«UTF-8»并保存

或者

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

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

于 2012-09-07T14:23:54.607 回答
1

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

要解决此问题,您必须:

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

或者

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

取决于您的 PayPal 账户类型。希望这可以节省一个小时的生命。

于 2012-10-14T19:49:00.367 回答