2010-07-22 63 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;"