Hatena::ブログ(Diary)

gan2 の Ruby 勉強日記 このページをアンテナに追加 RSSフィード

この日記のはてなブックマーク数 PV/ 1671803 Subscribe with livedoor Reader 役立つリンク集

2007-06-01

URI.escapeとCGI.escapeの違い

URI.escapeはhttp://の部分はエンコードしない。

CGI.escapeはhttp://の部分も含めてエンコードする。

日本語入りのURLエンコードするときはURI.escapeを使うのがよい。

require 'uri'
require 'cgi'

str = 'ほげ'

str_uri = URI.escape("http://d.hatena.ne.jp/keyword/#{str}")
str_cgi = CGI.escape("http://d.hatena.ne.jp/keyword/#{str}")

puts str_uri #=> http://d.hatena.ne.jp/keyword/%82%D9%82%B0
puts str_cgi #=> http%3A%2F%2Fd.hatena.ne.jp%2Fkeyword%2F%82%D9%82%B0

jugyojugyo 2007/10/20 10:44 こういうことだと思います。

・URI.escape はURIに使用可能な文字以外をエスケープする
・CGI.escape はURLとしての意味を持たせたくない文字をエスケープする

あんまり自信無いですが。

gan2gan2 2007/10/25 13:08 ああ、なるほど。
たしかにそう考えるとしっくりきますね。
ありがとうございます(・∀・)