Google App Engineで、日本語ファイル名のダウンロードを以下のように.encode('utf-8')をつけてheadersを出しています。
self.response.headers['Content-disposition'] = "filename="+storageFile.filename.encode('utf-8')
ローカルでのテストでは、正しく日本語ファイル名になります。
しかし、Google App Engineサイトにアップロードして実行すると、文字化けします。
原因と対策をご存知の方、教えてください。
GAEのバグ(仕様?)のようですね。
Issue 2212 - googleappengine - Content-Disposition is removed if there is a special char in filename (prod only) - Google App Engine - Google Project Hosting
Blobstore APIでも同様のことが起きる、と書いてあります。
問題はマルチバイトコードを使うと Content-dispositionヘッダが取り除かれてしまうことなので、URLエンコードしてしまうとよいのかもしれません。
Google-App-Engine-Japan のこのディスカッションが参考になるのではないでしょうか。
日本語ファイルのダウンロード - Google-App-Engine-Japan | Google グループ
あー、こういうスニペット集いいですね。
2011/11/22 19:23:34自分は地味にテキストファイルでやってましたが、こういうのも使いやすそう。
スニペット集、ご覧いただきありがとうございます。
2011/11/22 20:11:04