人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

●質問者: ok_2nd
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Lhankor_Mhy
ベストアンサー

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


ok_2ndさんのコメント
なるほど。 urllib.quote()で、URLエンコードしたら、うまくいきました。 Lhankor_Mhyさん、ありがとうございました。 スニペット集に、記載させていただきました。 http://memo.ok2nd.biz/?cat=300&query=urllib.quote

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

ok_2ndさんのコメント
スニペット集、ご覧いただきありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ