Подтвердить что ты не робот

Как я могу кодировать/декодировать URL в JavaScript и Ruby, чтобы получить одинаковые значения в обоих?

Я работаю над веб-приложением, где мне нужно кодировать и декодировать строку со стороны JavaScript и Ruby на основе кода. единственная проблема заключается в том, что методы escape для JavaScript и Ruby имеют небольшую разницу. в JavaScript " " рассматривается как "%20", но в ruby ​​" " закодирован до "+".

Любой способ решить это? Другой метод Ruby для кодирования строки в необработанном URL-кодировании?

После некоторого тестирования селена я заметил, что по какой-то причине URI.unescape смешивается между "£" и "?". Если я использую encodeURIComponent("£"); в JavaScript, а затем URI.unescape("%C2%A3") в Ruby, это значение, которое мы получаем, когда мы кодируем знак "£", я получаю знак "?". Любое решение?

4b9b3361

Ответ 1

Используйте

URI.escape(foo, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))

в рубине и

encodeURIComponent(foo); 

в javascript

Оба они будут вести себя одинаково и кодируют пространство как %20.

Ответ 2

require "uri";
puts URI.escape "1 2;", Regexp.new("[^0-9a-z\\-_.!~*'()]", "i");