aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2015-08-06 17:20:59 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2015-08-06 17:20:59 -0300
commit19d46e849e858b9f9e3be35faec4cd38e04cdae7 (patch)
treec2e5520ebcbf7ab44a8620bc4a25d81a3cc9527e /actionpack/lib/action_dispatch
parent8585a10d5eee661f9047d131c225469d8351dbc0 (diff)
parent9521e18ed0c811e70b2ccef309bdaa1250587aa0 (diff)
downloadrails-19d46e849e858b9f9e3be35faec4cd38e04cdae7.tar.gz
rails-19d46e849e858b9f9e3be35faec4cd38e04cdae7.tar.bz2
rails-19d46e849e858b9f9e3be35faec4cd38e04cdae7.zip
Merge pull request #21131 from eagletmt/percent-filename
Fix Encoding::UndefinedConversionError with multibyte UTF-8 filename containing "%" character
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/http/upload.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/http/upload.rb b/actionpack/lib/action_dispatch/http/upload.rb
index 540e11a4a0..a221f4c5af 100644
--- a/actionpack/lib/action_dispatch/http/upload.rb
+++ b/actionpack/lib/action_dispatch/http/upload.rb
@@ -28,7 +28,13 @@ module ActionDispatch
raise(ArgumentError, ':tempfile is required') unless @tempfile
@original_filename = hash[:filename]
- @original_filename &&= @original_filename.encode "UTF-8"
+ if @original_filename
+ begin
+ @original_filename.encode!(Encoding::UTF_8)
+ rescue EncodingError
+ @original_filename.force_encoding(Encoding::UTF_8)
+ end
+ end
@content_type = hash[:type]
@headers = hash[:head]
end