Преобразование напрямую из HTMLEncoding в URLEncoding - PullRequest
0 голосов
/ 08 июня 2011

В настоящее время я перевожу набор классических страниц ASP в нашу новую интрасеть на основе MVC. Хотя я не делаю каких-либо существенных изменений в функциональности, я делаю некоторые улучшения пользовательского интерфейса и несколько лучших рекомендаций. Это, однако, вызывает проблемы со специальными символами.

Один раздел работает с выпадающим списком клинических тестов, который затем ПОЛУЧИВАЕТСЯ через строку запроса в названии теста. Однако HTMLEncoding ASP.net слишком агрессивен (несмотря на то, что UTF-8 кодирует широкий диапазон символов). Это приводит к тому, что кодированный в HTML символ кодируется в виде URL, и все это приводит к ошибке «потенциально опасный запрос».

Я не могу HTMLE закодировать имена тестов, люди, имеющие доступ к изменениям, весьма ограничены, однако я не хочу начинать путь.

В результате у меня остается расшифровка строки, а затем перекодирование, но в JavaScript нет встроенной функции HTMLDecode. Вместо того, чтобы получать длинный список символов и выполнять замену над строкой, мне было интересно, есть ли простой способ перейти от символа, закодированного в HTML, к символу, закодированному в процентах, то есть вместо того, чтобы что-то декодировать и перекодировать по строкам & xxx; =% (ххх / 2)

1 Ответ

0 голосов
/ 09 июня 2011

Мне удалось придумать функцию, которая принимает HTML-кодированный символ (с использованием кодов, а не имен сущностей) и создает символ JavaScript, отсюда переход к URLencoded или выполнение чего-то еще с ним тривиально

result = subject.replace(/&#(\d*);/img, function(match, matchinggroup) {
    return String.fromCharCode(matchinggroup); 
});
...