在我的应用程序中,我需要通过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
然后一个吗?或者我应该使用其他编码方法(不这么认为)?
欢迎任何关于代码的建议。
答案 0 :(得分:3)
使用CGI.escape
代替: - )
require 'cgi'
puts CGI.escape('/') # => "%2F"
答案 1 :(得分:0)
如果你需要转义html,你也可以这样做:
CGI::escapeHTML('Usage: foo "bar" <baz>')
"Usage: foo "bar" <baz>"