LINUX.ORG.RU

Беда с кодировкой

 , , , ,


0

1

Взял пример из книжки. Запустил тут.
С латинскими символами всё в порядке, а с кириллическими кодировка такая:

ПривеÑ
Параметры получаю, вызывая функцию request.getParameter(parName), нужно, чтобы она возвращала стринги в UTF-8. ContentType выставлен в «text/html;charset=UTF-8». Не представляю, куда копать.

★★★★★

Ответ на: комментарий от maxcom

У меня и так прописано, не помогает.
Вот так выглядит мой connector:

    <Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               URIEncoding="UTF-8"
               redirectPort="443" />

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от ef37

Нет, только мапинг сервлета.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от eagleivg

Пройдись в режиме отладки по коду

Отладчик нужен, однако. Я не представляю, как осуществляется отладка по сети. Да и вообще как отлаживают веб-приложения?

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от ef37

Его и смотрел. Нет там фильтров, только мапинги.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Читаешь доки на томкат, правишь CATALINA_OPTS в catalina.sh, перезапускаешь томкат. Затем в IDE создаешь профиль отладки, ставишь точки останова и жмешь отладку. IDE коннектится к томкату, и вуаля - отлаживайся.

eagleivg ★★★★★
()
Ответ на: комментарий от CYB3R

Наврал, к JAVA_OPTS добавляешь строчку "-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" и после этого томкат будет на 8000-м порту принимать команды отладчика

eagleivg ★★★★★
()
Ответ на: комментарий от eagleivg

У меня получилось. Немного поправив свои скрипты, я запустил отладчик. Он офигенен! Я даже и не мечтал о полноценной отладке, а тут такое.
Но так ничего полезного для себя я не смог обнаружить. Введённый текст я смог отловить только в уже перекодированном виде.
Брейкпойнты ставил в этой функции:

    protected void processResponse(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Enumeration paramNames = request.getParameterNames();

        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();

        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!doctype html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Registration Form</title>");
            out.println("</head>");
            out.println("<body>");

            if (!paramNames.hasMoreElements()) {
                out.println("<h2>Не было передано ни одного параметра!</h2>");
            } else {
                out.println("<h2>Были переданы следующие параметры:</h2>");

                while (paramNames.hasMoreElements()) {
                    String parName = (String) paramNames.nextElement();
                    out.println("<strong>" + parName + "</strong> : "
                            + request.getParameter(parName));
                    out.println("<br>");
                }
            }

            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от eagleivg

Да там кроме этого _метода_ там и смотреть не на что. Pastebin.
Основная часть (скелет сервлета) сгенерирован умной IDE, остальное я списал из книги. Тот самый код из книги.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от maxcom

Спасибо всем, кто советовал. Решение проблемы нашлось. Нужно было добавить фильтр, который бы принудительно выставлял кодировку UTF-8 (или любую другую с кириллицей).
Ссылка на решение.
Можно проверить на моём локалхосте.

CYB3R ★★★★★
() автор топика
18 октября 2012 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.