diff options
Diffstat (limited to 'lib/webrick/httpservlet')
-rw-r--r-- | lib/webrick/httpservlet/filehandler.rb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/webrick/httpservlet/filehandler.rb b/lib/webrick/httpservlet/filehandler.rb index 06d1a3067d..f41a5b07cf 100644 --- a/lib/webrick/httpservlet/filehandler.rb +++ b/lib/webrick/httpservlet/filehandler.rb @@ -324,8 +324,17 @@ module WEBrick end def set_filename(req, res) - res.filename = @root.b + res.filename = @root path_info = req.path_info.scan(%r|/[^/]*|) + begin + path_info.map! do |path| + path.force_encoding('filesystem').encode(@root.encoding) + end + rescue EncodingError + path_info.map! do |path| + path.force_encoding(@root.encoding) + end + end path_info.unshift("") # dummy for checking @root dir while base = path_info.first |