The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"apache2+mod_jk2+tomcat4. Неверная перекодировка полей формы"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"apache2+mod_jk2+tomcat4. Неверная перекодировка полей формы"
Сообщение от Alexey Remizov emailИскать по авторуВ закладки on 08-Сен-04, 18:11  (MSK)
Здравствуйте.

На Debian Sarge запущен сервер apache2+mod_jk2+tomcat4, tomcat запущен в локали ru_RU.UTF-8. Кодировка браузера выставлена в UTF-8. Поля формы, заполненные русскими символами, после прохода через tomcat+servlet выглядят как UTF8-строка, перекодированная из latin1 в utf8 (козябры, в общем). Сервлет, по отзывам в форуме (это OpenXchange), работает нормально по карйней мере в локали de_DE.UTF-8. Апач отдает форму (tcpdump) на 8009 порт нормально. Соответственно грешу на настройки томката. Ранее с томкатом не сталкивался. Игрался с -Dfile.encoding, никакой реакции.

Может ли кто подсказать в какую вообще сторону копать?

Спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "apache2+mod_jk2+tomcat4. Неверная перекодировка полей формы"
Сообщение от dev emailИскать по авторуВ закладки(??) on 09-Сен-04, 13:27  (MSK)
Посмотри, что приходит от браузера, указана ли там кодировка.
(Большинство ее не посылает, полагая, что сервер должен использовать туже, что была в предыдущем ответе)

Не уверен, что у Томкета есть где-то такая настройка. Я вешаю фильтр, который выставляет кодировку принудительно (чтобы не зависить от используемого сервера). Но я, в данном случае, программер, а не админ :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "apache2+mod_jk2+tomcat4. Неверная перекодировка полей формы"
Сообщение от Alexey Remizov emailИскать по авторуВ закладки on 09-Сен-04, 13:32  (MSK)
Спасибо.

Я ничего не смог сделать, кроме как воткнуть "request.setCharacterEncoding("UTF8");" в код сервлета. Грязный хак, конечно, но не могу, мне уже гугль по ночам снится. Девелоперам написал, пусть сами разбираются.

>Посмотри, что приходит от браузера, указана ли там кодировка.
>(Большинство ее не посылает, полагая, что сервер должен использовать туже, что была
>в предыдущем ответе)
>
>Не уверен, что у Томкета есть где-то такая настройка. Я вешаю фильтр,
>который выставляет кодировку принудительно (чтобы не зависить от используемого сервера). Но
>я, в данном случае, программер, а не админ :)


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "apache2+mod_jk2+tomcat4. Неверная перекодировка полей формы"
Сообщение от dev emailИскать по авторуВ закладки(??) on 09-Сен-04, 21:38  (MSK)
Вот мой фильтр:

package webapp.servlet;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter
{
public static final String ENCODING = "UTF-8";
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
if(request.getCharacterEncoding() == null)
request.setCharacterEncoding(ENCODING);

chain.doFilter(request, response);
}

public void destroy()
{
}
}

Скомпилировать в WEB-INF/classes и в WEB-INF/web.xml прописать

  <filter>
    <filter-name>Encoding Filter</filter-name>
    <filter-class>webapp.servlet.EncodingFilter</filter-class>
  </filter>

и

  <filter-mapping>
    <filter-name>Encoding Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Лицензия - public domain :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "apache2+mod_jk2+tomcat4. Неверная перекодировка полей формы"
Сообщение от MK emailИскать по авторуВ закладки(??) on 06-Окт-04, 21:26  (MSK)
Разные версии томката ведут себя по разному:
-некоторые (старые) считают кодировку по умолчанию ISO-8859-1
-новые берут кодировку ил локалей JVM под которой запущен томкат
Лучше всего плюнуть на это и правильно писать сервлеты:
-кодировка формы вам известна - данные придут в той же кодировке
-request.setCharacterEncoding("кодировка")
-response.setContentType("text/html;charset=кодировка");

Смотри также: http://java.mediacomweb.com/article/index.jsp?id=2

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру