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. «販売設定» 列で «言語エンコード» を見つけます
  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. «販売設定» 列で «言語エンコード» を見つけます
  3. «その他のオプション»をクリックします
  4. «UTF-8» を選択して保存

または

  1. «マイアカウント»の下にある«プロフィール»リンクをクリックします
  2. 右側の「私の販売ツール」をクリックします
  3. «PayPal ボタンの言語エンコード» リンクを見つけます (一番下にあります)
  4. «その他のオプション»をクリックします
  5. «UTF-8» を選択して保存

PayPal アカウントの種類によって異なります。それが誰かの1時間の命を救うことを願っています。

于 2012-10-14T19:49:00.367 に答える