Google App Engineで日本語ファイル名のダウンロードについて。


Google App Engineで、日本語ファイル名のダウンロードを以下のように.encode('utf-8')をつけてheadersを出しています。
self.response.headers['Content-disposition'] = "filename="+storageFile.filename.encode('utf-8')

ローカルでのテストでは、正しく日本語ファイル名になります。
しかし、Google App Engineサイトにアップロードして実行すると、文字化けします。

原因と対策をご存知の方、教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/11/22 18:22:20

ベストアンサー

id:Lhankor_Mhy No.1

回答回数814ベストアンサー獲得回数232

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 グループ

他1件のコメントを見る
id:Lhankor_Mhy

あー、こういうスニペット集いいですね。
自分は地味にテキストファイルでやってましたが、こういうのも使いやすそう。

2011/11/22 19:23:34
id:ok_2nd

スニペット集、ご覧いただきありがとうございます。

2011/11/22 20:11:04

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません