2012-01-03 8 views
10

RubyではURLエスケープについて多くの議論がありますが、残念ながら適切な解決策が見つかりませんでした。ruby​​でエスケープするURL

一般に、URI.escapeはジョブを実行する必要がありますが、すべての文字をサポートしていないように見えます。たとえば、「[」をエスケープしません。

URI.parse(URI.escape("1111{3333")) 

がうまくいきます。

URI.parse(URI.escape("1111[3333")) 

は例外を発生させます。

"["はRFCによるとURLの適格な文字ではありませんが、ブラウザに入力するとそれを受け取り、ページをレンダリングするので、まったく同じ動作が必要です。

Rubyでエスケープするための準備ができているソリューションはありますか?

答えて

16

私は通常、URIパラメータを逃れるために

CGI.escape 

を使用しています。

require 'cgi'. 

CGI.escape('1111[3333') 
=> "1111%5B3333" 
+0

ありがとう、私は必要なすべてを行うように見える – com

+1

奇妙なことは、CGI.escape( '1111 3333')= "1111 + 3333"、 "1111%203333"実際のリンクは "+" – com

関連する問題