При написании Web-приложения на Java под Tomcat у меня, и судя по IRC, у многих других возникала проблема по раскодированию того что нам приходит в GET запросе. Например на сайте может быть формочка поиска, которую принято отправлять GETом. А принимающий сервлет/контроллер получает какуюто чушь. Вроде приложение выдает UTF-8, принимает POST как UTF-8, а в GET чтото не то.

А решение на самом деле простое: прописать в server.xml, для нужного connector'а аттрибут URIEncoding="UTF-8", иначе он думает что там ISO-8859-1 и мы получаем совсем не то.

5 Комментариев на “Tomcat и кодировка GET запроса”

  1. Стас сказал:

    Ух ты, как все оказывается просто, а я для этого писал специальный фильтр, который всем входящим запросам делал request.setCharacterEncoding («UTF-8»);

  2. docker сказал:

    А где-нибудь кроме server.xml это указать нельзя? В web.xml вроде нельзя...

  3. Александр сказал:

    А я данную проблему поборол несколько инным способом.

    String s = new String (request.getParameter («city»).getBytes («ISO-8859-1»), «UTF-8»);

    resultSet = statement.executeQuery («SELECT * FROM testarof.aroatms_tbl WHERE city_name LIKE '%»+s+"%'");

  4. Стас Агарков сказал:

    У меня было написано через специальный фильтр, который делает request.setCharacterEncoding («UTF-8»).

    Я попробовал сделать через server.xml, как вы написали, но данные приходящие с формы все равно в корявой кодировке.

  5. Рафаел сказал:

    Подскажите, пожалуйста, куда именно и в каком виде нужно прописывается request.setCharacterEncoding («UTF-8»);?

    В java не разбираюсь, просто нужно корректно страницу на tomcat-e поднять.

Оставьте свое мнение

XHTML: Вы можете использовать следующие html теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> Если в комментарии пишете XML то вместо "<" используйте "&lt;"

Благодарности, комментарии не по теме и пр. спам ссылками удаляется, к тому же автоматически, можете не стараться.