Ответ 1
Используйте
URI.escape(foo, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
в рубине и
encodeURIComponent(foo);
в javascript
Оба они будут вести себя одинаково и кодируют пространство как %20.
Я работаю над веб-приложением, где мне нужно кодировать и декодировать строку со стороны JavaScript и Ruby на основе кода. единственная проблема заключается в том, что методы escape для JavaScript и Ruby имеют небольшую разницу. в JavaScript " "
рассматривается как "%20"
, но в ruby " "
закодирован до "+"
.
Любой способ решить это? Другой метод Ruby для кодирования строки в необработанном URL-кодировании?
После некоторого тестирования селена я заметил, что по какой-то причине URI.unescape
смешивается между "£"
и "?"
. Если я использую encodeURIComponent("£");
в JavaScript, а затем URI.unescape("%C2%A3")
в Ruby, это значение, которое мы получаем, когда мы кодируем знак "£"
, я получаю знак "?"
. Любое решение?
Используйте
URI.escape(foo, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
в рубине и
encodeURIComponent(foo);
в javascript
Оба они будут вести себя одинаково и кодируют пространство как %20.
require "uri";
puts URI.escape "1 2;", Regexp.new("[^0-9a-z\\-_.!~*'()]", "i");