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

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

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

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

11
задан BalusC 18 May 2010 в 14:03
поделиться

1 ответ

Используйте

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

в ruby, и

encodeURIComponent(foo); 

в javascript

Обе эти программы будут вести себя одинаково и кодировать пробел как %20.

31
ответ дан 3 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: