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" |
