RubyのCGI.escape
とURI.encode
はどちらもURIエンコードを行うためのメソッドです。基本的にはCGI.escape
を使うことが推奨されていますが、これまでのしくみと仕様を合わせたい場合もあるので、簡単に違いをまとめておきます。
🚜 CGI.escape
CGI.escape
では次のようにエスケープされます。
require 'cgi' |
CGI.escape
はCGIの仕様にもとづいてデータをエンコード、デコードするためのメソッドです。
🎂 URI.encode
URI.encode
では次のようにエスケープされます。
require 'uri' |
ただし、RFC-3896の仕様に準拠できているわけではないので注意が必要です。
🐮 CGI.escapeとURI.encodeの違い
URI.encode
はバックスラッシュ等は変換しない。CGI.escape
はすべてエスケープ
🐯 [補足]RFC-3896に準拠:Addressable
RFC-3896、RFC-3987、RFC-6570に準拠する場合は、「Addressable」を使うと良さそうです。
require "addressable/uri" |