powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с русскими буквами в сервлете...
10 сообщений из 10, страница 1 из 1
Проблема с русскими буквами в сервлете...
    #32761654
Игорь_Ю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
постом сервлету передается русский текст, вместо букв ?????
не возможности использовать setCharacterEncoding()
сервер Resin
jsdk 1.2.10
...
Рейтинг: 0 / 0
Проблема с русскими буквами в сервлете...
    #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
Проблема с русскими буквами в сервлете...
    #32762653
SOMNAMBULA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_Юпостом сервлету передается русский текст, вместо букв ?????
не(т?) возможности использовать setCharacterEncoding()
сервер Resin
jsdk 1.2.10
Интересно, почему нет возможности?

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

Код: plaintext
1.
2.
String valueEncoding, resultEncoding;
...
result =  new  String(value.getBytes(valueEnacding), resultEncoding);      
...
Рейтинг: 0 / 0
Проблема с русскими буквами в сервлете...
    #32762724
Фотография insect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблема с русскими буквами в сервлете...
    #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
Проблема с русскими буквами в сервлете...
    #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
Проблема с русскими буквами в сервлете...
    #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
Проблема с русскими буквами в сервлете...
    #32767004
Игорь_Ю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да и еще
request.getParameter("charset"));
request.getCharacterEncoding());

возвращают null`ы
...
Рейтинг: 0 / 0
Проблема с русскими буквами в сервлете...
    #32767052
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас везде UTF-8. Под Tomcat'ом заметил, что рксские буквы не передаются с формы на jsp через GET, но нормально передаются через POST. М.б. дополнительно помогло создание фильтра, на вышеупомянутьй странице он описан как CharsetFilter. В нем я ставлю encoding="utf-8";
...
Рейтинг: 0 / 0
Проблема с русскими буквами в сервлете...
    #32767102
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
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с русскими буквами в сервлете...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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