Различное кодирование строки запроса на основе кодовой страницы. ASP классик - PullRequest
0 голосов
/ 04 ноября 2010

В настоящее время мы конвертируем наше веб-приложение в UTF-8 из ISO-8859-1. И все работает отлично, но запрашивая переменные get / post с других сайтов (формы регистрации).

Некоторые из этих сайтов, которые публикуют на нашем сайте, имеют кодировку ISO-8859-1, а сом имеют UTF-8.

Проблема в том, что специальные символы URL-кодируются по-разному в зависимости от кодировки сайта.

Например: Ш =% F8 в ISO-8859-1 ø =% C3% B8 в UTF-8

Я не могу получить% F8 правильно, когда у меня есть кодировка UTF-8. Я получаю только символ Unicode «ЗАМЕНА ХАРАКТЕРА» (U + FFFD).

Любые советы о том, как это исправить, будут очень благодарны:)

Torbjørn

Ответы [ 2 ]

0 голосов
/ 11 ноября 2010

Я бы посоветовал вам провести предварительный анализ входных данных перед их преобразованием. По сути, отсканируйте коды iso-8859-1 для Æ, Ø и Å (верхний и нижний регистр). Если вы найдете такой запрос, выполните поиск / замену всего запроса, где вы меняете коды iso-char на коды UTF-8.

0 голосов
/ 05 ноября 2010

Вы можете явно указать кодировку, используя <form accept-charset="UTF-8">.

Если вы не хотите этого делать, браузер должен угадать нужную кодировку.Для этого обычно требуется кодирование страницы, на которой находится форма.Поэтому, если вы предоставите файлы HTML как UTF-8, ваши формы будут также отправлены как UTF-8.

...