2016/12/16

BlobstoreUploadHandlerの文字化け問題の解決方法

Google App Engine Python2.7環境で、blobstore_handlers.BlobstoreUploadHandlerを使って、ファイルアップロードする際、日本語のリクエストパラメータが文字化けする問題に長年悩まされていた。

「文字化け」といっても、マルチバイト文字はBase64にエンコードされて送信される、という謎仕様。さらに、文字の組み合わせによっては Base64ではなく、Quoted-printable にエンコードされたりと、意味がわからない。。。

そんなわけで、ファイルとテキストは、別のリクエストに分けたりと、クライアント側で対処していた。

先日、この問題をGCPのサポートに問い合わせた結果、あっさりと対応方法を教えてくれた。

app.yamlに以下を追加すれば良いだけ。

libraries:
- name: webob
  version: "1.2.3"

なんと、WebObのバグだったようだ。
http://docs.webob.org/en/stable/changes.html#id25

GAEのPython2.7環境では、webobの1.1.1(かなり古い)がデフォルトらしく、1.2.3で解決されたこのbugfixのため、この対応で回避できる。という事らしい。

といっても、1.2.3もかなり前のバージョンなので、もっと上位のバージョンしても問題なさそうだけど、今回はこのバージョンで様子見で。。。

そろそろ、Goに移行しようかなぁ。。。

0 件のコメント:

コメントを投稿