Rails:base64和字符转义问题

时间:2010-07-22 14:58:12

标签: ruby-on-rails ruby escaping uri base64

在我的应用程序中,我需要通过base64对字符串进行编码,将其转义为可能的特殊字符并将其放入URL中。

我执行以下操作:

string = "random_email@server.com"

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如何忽略逃避'/'?我应该使用来自URI的任何其他.escape然后一个吗?或者我应该使用其他编码方法(不这么认为)?

欢迎任何关于代码的建议。

2 个答案:

答案 0 :(得分:3)

使用CGI.escape代替: - )

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

答案 1 :(得分:0)

如果你需要转义html,你也可以这样做:

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

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