1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

孤独アドベントカレンダーに挑戦Advent Calendar 2019

Day 1

rails6.0ではsend_dataでファイル名を明示的にエンコードしなくても文字化けしなくなってる

Posted at

タイトルの通り、rails6.0以前ではsend_fileでファイルダウンロード機能を実装しているとIE, edgeの場合にファイル名が文字化けしてしまうので、明示的にエンコード処理をして対策を行う必要がありました。
rails6.0ではこの対応が不要になるコミットがされています。

rails6.0以前の場合

これだと、IE、edgeの場合にファイル名が文字化けしてしまいます。

data = "XXX"
filename = "サンプルファイル.txt"
send_data(data, filename: filename)

その為、以下の様に明示的にエンコードしてあげる必要がありました。

data = "XXX"
filename = "サンプルファイル.txt"
+ encorded_filename = ERB::Util.url_encode(filename)
- send_data(data, filename: filename)
+ send_data(data, filename: encorded_filename)

rails6.0では

詳細はPRに書いてありますが、上記のエンコード処理をrailsがしてくれる様になったので、
明示的にエンコード処理は不要になりました。
また、rails6.0以前のアプリの為にバックポートgemも用意されています。(PR内に書かれています。)

現在rails5系で動いていて、明示的にエンコードしているアプリでは
railsバージョンアップ後は不要な処理になるので忘れずに削除しましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?