Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не отображаются html-параметры в кирилице 
V
    Опции темы
Pawl
Дата 9.1.2014, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 3
Всего: 28



Сделал простейший сервлет LoginServlet, который генерит страничку, куда пользователь добавляет свое имя. По сабмиту делаю редирект на html-страничку view.htm. К url-у странички добавляю параметр - имя пользователя. На view.htm извлекаю имя при помощи javascript. Если имя в латинице (допустим, Wasya), параметр передается прекрасно (в адресной строке браузера вижу http://localhost:8080/view.htm?userName=Wasya). А если в кирилице (Вася), то параметр не добавляется совсем (в адресной строке браузера вижу http://localhost:8080/view.htm?userName=) Как это исправить? Привожу код:
LoginServlet.java:
Код

package app;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("utf8");
        PrintWriter pw = response.getWriter();
        pw.println("<html><head><title>Ввод</title>" +
                "<meta http-equiv='Content-Type' content='text/html; " +
                "charset=utf-8'/></head>");
        pw.println("<form action='login.do' method='post'>Введите имя:" +
                "<input type='text' name='name'>" +
                "<input type='submit' value='Войти'>");
        pw.println("</form></body></html>");
    }

    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("name");
        if (name != null || !"".equals(name)) {
            response.setCharacterEncoding("UTF-8");
            response.sendRedirect(response.encodeRedirectURL("view.htm?userName=" +
                    name));
        }
    }
}

view.htm:
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>title</title>
    <script language="JavaScript" type="text/javascript">
        function getRequestParam(name) {
            name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
            var regexS = "[\\?&]" + name + "=([^&#]*)";
            var regex = new RegExp(regexS);
            var results = regex.exec(window.location.href);
            if (results == null)
                return "";
            else
                return results[1];
        }
    </script>
</head>
<body>
<script language="JavaScript" type="text/javascript">
    document.write(getRequestParam("userName"));
</script>
</body>
</html>

web.xml:
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <welcome-file-list>
        <welcome-file>login.do</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>app.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/login.do</url-pattern>
    </servlet-mapping>
</web-app>

Спасибо за помощь!


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Pawl
Дата 10.1.2014, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 3
Всего: 28



Проблему решил путем добавления оператора
Код

name = new String(name.getBytes("UTF-8"), "ISO-8859-1");
 перед редиректом


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.