Tomcat и кодировка GET запроса

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

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

  • http:// Стас

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

  • http:// docker

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

  • http:// Александр

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

    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+"%'");

  • http:// Стас Агарков

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

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

  • http:// Рафаел

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

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