У меня есть веб-приложение (ну, на самом деле это просто сервлет), который получает данные от 3-х различных источников:Сервлет получает данные как в ISO-8859-1, так и в UTF-8. Как URL-декодировать?
- Источник А представляет собой HTML-документ, написанный в UTF-8, и передает данные через
<form method="get">
, - Источник B написан в ISO-8859-1 и отправляет данные через
<form method="get">
. - Источник C написан в ISO-8859-1 и отправляет данные через
<a href="http://my-servlet-url?param=value¶m2=value2&etc">
.
Сервлет получает параметры запроса и URL-декодирует их с использованием UTF-8. Как и следовало ожидать, A работает без проблем, в то время как B и C сбой (вы не можете URL-декодировать в UTF-8 то, что закодировано в ISO-8859-1 ...).
Я могу внести небольшие изменения в B и C, но мне не разрешено изменять их с ISO-8859-1 на UTF-8, что позволило бы решить все проблемы.
В B я смог решить проблему, добавив accept-charset="UTF-8"
к <form>
. Таким образом, он отправляет данные в UTF-8, даже если страница является ISO.
Что мне делать, чтобы исправить C?
В качестве альтернативы, есть ли способ определить кодировку на сервлете, чтобы я мог вызывать URL-декодирование с правильной кодировкой в каждом случае?
Edit: Я только что нашел this, который, кажется, чтобы решить мою проблему. Мне еще нужно сделать несколько тестов, чтобы определить, влияет ли это на производительность, но я думаю, что я буду придерживаться этого решения.
Как насчет ' '? – zildjohn01
Хммм .. Я бы предпочел не добавлять в запрос больше параметров ... но я думаю, что так оно и должно работать. Я попробую. Благодаря! :) – AJPerez
В этом подходе я думаю, что главная страница поиска Google включает (или включает) параметр «ie» ... Слишком ленив для тестирования сейчас http://www.seomoz.org/ugc/the-ultimate-guide -to-the-google-search-parameters – leonbloy