代码之家  ›  专栏  ›  技术社区  ›  oldhomemovie

Rails:base64和字符转义问题

  •  1
  • oldhomemovie  · 技术社区  · 14 年前

    在我的应用程序中,我需要通过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参数,那么这是完全不可接受的。

    怎么会 逃逸 忽略以转义'/'?我要用其他的吗 .escape 那么一个,哪个来自URI?或者我是否应该使用其他编码方法(不这么认为)?

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

    2 回复  |  直到 14 年前
        1
  •  3
  •   Marc-André Lafortune    14 年前

    使用 CGI.escape 取而代之的是:

    require 'cgi'
    puts CGI.escape('/') # => "%2F"
    
        2
  •  0
  •   nicholasklick    14 年前

    如果需要退出HTML,也可以执行以下操作:

    CGI::escapeHTML('Usage: foo "bar" <baz>')
    
    "Usage: foo &quot;bar&quot; &lt;baz&gt;"