2012-10-13

railsでsend_fileするときに日本語ファイル名を指定するとchromeでたまに文字化けする

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
railsでファイルダウンロードさせるためにsend_fileを使うときに日本語ファイル名でダウンロードさせるとき、私は以下のようにしていました。

filename = "今後の予定.xls".encode("cp932")
send_file(f, :filename => filename)

cp932でencodeしているのは、utf-8でおくるとIEが文字化けしていたので、そうしています。

普段は、chromeでも特に問題がありません。
しかし、たまに文字化けが出ていました。
上記のファイル名の場合は「予」の部分で文字化けがおきてしまいます。

これの原因は、たぶん以下のサイトで書いてあることが影響している気配です。
https://sites.google.com/site/fudist/Home/grep/damemoji

で対策として以下のようにするようにしました。

filename = ERB::Util.url_encode("今後の予定.xls")
send_file(f, :filename => filename)

これで問題なくIEでもchromeでも文字化けしないようになりました。

以下が参考になったサイトです。

http://kiita-it-blog.seesaa.net/article/253744186.html



コメントを投稿