2010-07-22 41 views
1

在我的應用程序中,我需要通過base64編碼一個字符串,將其轉義爲可能的特殊字符並將其放入URL中。Rails:base64和字符轉義問題

我做到以下幾點:

string = "[email protected]" 

enc = OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC') 
enc.encrypt('dummy_salt') 
encoded = URI.escape(Base64.encode64(enc.update(string) << enc.final)) 

的問題是,不知何故URI.escape不要逃避 '/' 字符。如果編碼字符串用作URL參數,那完全不可接受。

URI.escape怎麼會忽略'/'?我應該使用任何其他.escape那麼一個來自URI?或者我甚至應該使用其他編碼方法(不這麼認爲)?

對代碼的任何建議也是受歡迎的。

回答

3

使用CGI.escape,而不是:-)

require 'cgi' 
puts CGI.escape('/') # => "%2F" 
+0

輝煌,謝謝 – gmile 2010-07-31 10:11:31

0

如果您需要逃避的HTML,你也可以做:

CGI::escapeHTML('Usage: foo "bar" <baz>') 

"Usage: foo &quot;bar&quot; &lt;baz&gt;"