2013-02-19

Rails3で日本語ファイルダウンロードさせると文字化けするぞ

いままでの私のやり方

Webブラウザによって,マルチバイトファイル名の取り扱いが異なるというのが問題なんだよね

いままでは,http://kingyo-bachi.blogspot.jp/2012/10/railssendfilechrome.html 

を参考にして,ファイル名をURLエンコードすることでお茶を濁していたんだ

でもこれだと,Firefoxファイル名が文字化けすることに気付いてしまった

気づかなければ放置していたんだけどね :P

もっといい方法いか

そこで最近事情を調べたサイトはないかと調べてみると

http://rails.hatenadiary.jp/entry/2013/01/31/104006 を発見

(生sjisと,URLエンコードの違いはもう少ししっかり書いておかないと誤解招かないかな?という当ページへの突っ込みはさておき)

まりは,基本は日本語ファイル名をUTF-8で扱うぞ,ただしIEだけは例外としてSJISに変換してやるぞ

ということだね

ちょっと気になったので,このあたりのブラウザ対応状況をざっと調べてみたよ

なお調べた日本語ファイル名は「今日の予定.doc」.「予」という漢字が入っているのがポイント

生utf8 sjisurl_encode(utf8)url_encode(sjis)
chrome(win7-64bit) ok x okx
firefox 18 (win7-64bit) ok x xx
IE9(win7-64bit) x ok okx
firefox(MacOS X) ok x xx

例外処理って気持ち悪いよね

さらにいろいろ調べてみると,正式にはRFC2231に準拠させるのが正しいみたい

http://fgin.seesaa.net/article/30073826.html によると,

IE6対応してなかったようだけど,私の中ではIE6はもう絶滅していることになっているので!

最近ブラウザ対応しているよね!きっと!

Railsのsend_file関数でさ,RFC2231準拠のContent-Disposition表記ができたらいいのにな(チラッチラッ)

  • もう少し詳しく調べてみたよ http://linux.ohwada.jp/modules/smartsection/item.php?itemid=515 http://0xcc.net/pub/webdb/bk-05.html などのまとめが素晴らしいね 最近のブラウザはほとんどRFC2231に対応しているみた...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん