如果在Ruby中包含%2B的电子邮件,如何对电子邮件进行编码

时间:2019-05-20 10:09:34

标签: ruby-on-rails ruby encoding urlencode

如何使用UTF8编码对URL参数进行编码: URL?email=test+@gmail.com到URL?email=test%2B@gmail.com

我尝试了'test+@gmail.com'.encode(“ UTF-8”)

CGI :: escape('test+@gmail.com')返回'test%2B%40gmail.com但我需要test%2B@gmail.com

email=test+@gmail.com应该编码为“ +”,只有其余部分保持不变 URL?email=test%2B@gmail.com

1 个答案:

答案 0 :(得分:1)

uri std-lib具有用于该URI::Escape#escape的方法。 URI扩展了URI::Escape模块,这种方法也是如此。

URI.escape('test+@gmail.com', '+')
#=> "test%2B@gmail.com"        ^ the characters to escape with URL encoding

但是像@spickermann says in the comments

  

为什么要在URL中编码+而不是@@也必须进行编码。