передача специальных символов с помощью encodeURI в javascript

У меня есть поле ввода HTML, связанное с кнопкой с функцией onclick в javascript, которая может передавать значение текстового поля в текстовое поле другой страницы. При передаче значений с одной страницы на другую через URL-запрос JSP я обнаружил, что кодирование значений с помощью encodeURI() получает:

  • £ --> £ (2 знака !!)
  • ö --> ö (2 знака !!)

Когда я использую Javscript escape(), я получаю правильные кодировки, но, к сожалению, знак + исчезает. Есть ли лучшее решение для стабильной кодировки символов?


person poseid    schedule 07.08.2009    source источник


Ответы (2)


encodeURI() кодирует с использованием кодировки UTF-8, поэтому вы видите два знака для кодирования одного символа (это нормально).

Если вы хотите использовать escape и при этом сохранить знак +, вы можете использовать следующее:

function mod_escape(value) {
  value = escape(value);
  return value.replace(/\+/g, '%2B');
}
person Andrew Moore    schedule 07.08.2009

Я думаю, вам следует использовать encodeURIComponent() для каждой отдельной пары ключ=значение и decodeURIComponent на второй странице для каждой пары ключ=значение.

person Satya Prakash    schedule 05.09.2009