Как кодировать электронную почту, если она содержит "+" в% 2B в Ruby - PullRequest
1 голос
/ 20 мая 2019

Как кодировать параметры URL с кодировкой UTF8: URL?email=test+@gmail.com to 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 Ответ

1 голос
/ 20 мая 2019

У 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 говорит в комментариях :

Почему вы хотите закодировать + в URL, а не @? @ тоже должен быть закодирован.

...