Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с русскими буквами в сервлете... / 10 сообщений из 10, страница 1 из 1
29.10.2004, 18:00
    #32761654
Игорь_Ю
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
постом сервлету передается русский текст, вместо букв ?????
не возможности использовать setCharacterEncoding()
сервер Resin
jsdk 1.2.10
...
Рейтинг: 0 / 0
01.11.2004, 10:18
    #32762610
Музыка Дождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
Код: plaintext
1.
2.
3.
4.
...
out.write("<html><head>");
...
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">");
...
так?
...
Рейтинг: 0 / 0
01.11.2004, 10:45
    #32762653
SOMNAMBULA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
Игорь_Юпостом сервлету передается русский текст, вместо букв ?????
не(т?) возможности использовать setCharacterEncoding()
сервер Resin
jsdk 1.2.10
Интересно, почему нет возможности?

а так, например:

Код: plaintext
1.
2.
String valueEncoding, resultEncoding;
...
result =  new  String(value.getBytes(valueEnacding), resultEncoding);      
...
Рейтинг: 0 / 0
01.11.2004, 11:20
    #32762724
insect
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
...
Рейтинг: 0 / 0
01.11.2004, 11:58
    #32762834
Игорь_Ю
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
SOMNAMBULA Игорь_Юпостом сервлету передается русский текст, вместо букв ?????
не(т?) возможности использовать setCharacterEncoding()
сервер Resin
jsdk 1.2.10
Интересно, почему нет возможности?

а так, например:

Код: plaintext
1.
2.
String valueEncoding, resultEncoding;
...
result =  new  String(value.getBytes(valueEnacding), resultEncoding);      



Это мы пробовали, в jsp работает, а в сервлете нет.
valueEnacding в jsp ="Cp1251"
и админ веб сервера утверждает что на сервере "Cp1251"

Почему же не работает в сервлете?
...
Рейтинг: 0 / 0
01.11.2004, 13:23
    #32763050
Dmitry Isaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
Такая фигня лечится так:

Клиент:

String value1 = URLEncoder.encode(new String("Тестовое сообщение!"), "windows-1251");
out.print("p1=" + value1);

Сервлет:
request.setCharacterEncoding("windows-1251");
out.println("<p>" + request.getParameter("p1") + "</p>");

У меня работает
...
Рейтинг: 0 / 0
03.11.2004, 15:47
    #32767002
Игорь_Ю
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
тестовый сервлет
Вот что я делаю в doPost :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
    String clientEnc = request.getParameter("clientEnc");
    String requestEnc = request.getParameter("requestEnc");
    String data = request.getParameter("data");

    // Encoding parameters
     if (clientEnc== null  || clientEnc.equals(""))
    {
      clientEnc = request.getParameter("charset");
       if ( clientEnc== null  ) clientEnc="Cp1251";
    }

     if (requestEnc== null  || requestEnc.equals(""))
    {
      requestEnc = request.getCharacterEncoding();
       if ( requestEnc== null  ) requestEnc = "Cp1251";
    }

    String new_data =  new  String(data.getBytes(requestEnc),clientEnc);
    Log.log("clientEnc : " + clientEnc);
    Log.log("requestEnc : " + requestEnc);
    Log.log("data : " + data);
    Log.log("request.getParameter(\"charset\") : " + request.getParameter("charset"));
    Log.log("request.getCharacterEncoding() : " + request.getCharacterEncoding());
    Log.log("new_data : " + new_data);
    out.println("<html>");
    out.println("<head><title>InfoServlet</title></head>");
    out.println("<body bgcolor=\"#ffffff\">");
    out.println("<p>LOGFILE : " + LOGFILE + "</p>");
    out.println("<p>LOGLEVEL : " + LOGLEVEL + "</p>");
    out.println("<p> clientEnc : " + clientEnc + "</p>");
    out.println("<p> requestEnc : " + requestEnc + "</p>");
    out.println("<p> data : " + data + "</p>");
    out.println("<p> request.getParameter(\"charset\") : " + request.getParameter("charset") + "</p>");
    out.println("<p> request.getCharacterEncoding() : " + request.getCharacterEncoding() + "</p>");
    out.println("<p> new_data : " + new_data + "</p>");
    out.println("</body></html>");


При
requestEnc = "Cp1251"
clientEnc="Cp1251"

браузер выводит русские буквы верно.
При этом сервлет еще и пишет в файл
по апачем русский текст записывается верно

а вот под ресином пишет в файл - ???????? вместо того, что лежит в new_data
почему это может быть?
...
Рейтинг: 0 / 0
03.11.2004, 15:49
    #32767004
Игорь_Ю
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
да и еще
request.getParameter("charset"));
request.getCharacterEncoding());

возвращают null`ы
...
Рейтинг: 0 / 0
03.11.2004, 16:01
    #32767052
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
У нас везде UTF-8. Под Tomcat'ом заметил, что рксские буквы не передаются с формы на jsp через GET, но нормально передаются через POST. М.б. дополнительно помогло создание фильтра, на вышеупомянутьй странице он описан как CharsetFilter. В нем я ставлю encoding="utf-8";
...
Рейтинг: 0 / 0
03.11.2004, 16:21
    #32767102
30k
30k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с русскими буквами в сервлете...
Denis PopovУ нас везде UTF-8. Под Tomcat'ом заметил, что рксские буквы не передаются с формы на jsp через GET, но нормально передаются через POST. М.б. дополнительно помогло создание фильтра, на вышеупомянутьй странице он описан как CharsetFilter. В нем я ставлю encoding="utf-8";

фильтр (опять же томкат)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   class  CharsetFilter  implements  Filter {
   public   void  init(FilterConfig config)  throws  ServletException {
  }

   public   void  doFilter(ServletRequest request, ServletResponse response, FilterChain next)
       throws  IOException, ServletException {
    request.setCharacterEncoding("Cp1251");
    next.doFilter(request, response);
  }

   public   void  destroy() {
  }
}

фильтр маппится в web.xml:

Код: plaintext
1.
2.
3.
4.
<filter-mapping>
  <filter-name>Charset Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

работает и с гет, и с пост-запросами
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с русскими буквами в сервлете... / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]