У меня есть веб-приложение (на самом деле это просто сервлет), которое получает данные из 3 разных источников:
- Источник A - это 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-декодирование с правильной кодировкой в каждом случае?
Редактировать : Я только что нашел это , что, похоже, решает мою проблему. Мне все еще нужно сделать несколько тестов, чтобы определить, влияет ли это на производительность, но я думаю, что я буду придерживаться этого решения.