Escape вход пользователя для соответствия кодировке страницы

Укороченная версия:

Есть ли функция javascript, которая кодирует данные в соответствии с кодировкой страницы?

например.

  • Когда кодировка UTF-8, ń превращается в %C5%84
  • Когда в кодировке ISO-8859-2, ń переходит в %F1

Задний план:

У меня есть клиентская библиотека javascript, которая отправляет введенные пользователем данные AJAX.

Он отправляется как часть ascii blob и после разблокировки (через прокси) данные должны точно соответствовать данным, которые были бы отправлены, отправив форму обычно (так что логика на стороне сервера не нуждается в изменении)

Конечно, специальные символы сбрасываются при их отправке браузером. Чтобы соответствовать этому, я использовал encodeURIComponent() для данных, прежде чем обрабатывать его дальше. Но теперь эта библиотека используется на сайтах с другими кодировками, например, ISO-8859-2.

Пока я использую это:

function escapeByCharset(str) {
    if (document.charset === "ISO-8859-2") {
        return escape(str);
    } else {
        return encodeURIComponent(str);
    }
}

Но в идеале я ищу общее решение для всех кодировок.

0
источник поделиться
1 ответ

Вы можете использовать эту функцию, которая заставит браузер закодировать ее для вас:

function encodeWithPageEncoding(str) {
    var pathString = "http://a.b?";
    var el = document.createElement('a');
    el.href = pathString + str;
    return el.href.slice(pathString.length +1);
}
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос