Ответ 1
Обычно я использую
CGI.escape
чтобы избежать параметров URI.
require 'cgi'.
CGI.escape('1111[3333')
=> "1111%5B3333"
В Ruby много обсуждений об экранировании URL-адресов, но, к сожалению, я не нашел подходящего решения.
В общем, URI.escape
должен выполнять задание, но похоже, что он не поддерживает все символы, например, он не убегает "[".
URI.parse(URI.escape("1111{3333"))
работает хорошо.
URI.parse(URI.escape("1111[3333"))
вызывает исключение.
Я понимаю, что "[" не является подходящим символом в URL-адресе в соответствии с RFC, но когда я ввожу его в браузер, он принимает его и отображает страницу, поэтому мне нужно точно такое же поведение.
Знаете ли вы готовое решение для экранирования в Ruby?
Обычно я использую
CGI.escape
чтобы избежать параметров URI.
require 'cgi'.
CGI.escape('1111[3333')
=> "1111%5B3333"
Символ [является символом ограничителя uri и не требует экранирования.
http://www.ietf.org/rfc/rfc2396.txt раздел 2.4.3. Исключенные символы US-ASCII