Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Перенос программы с Windows в FreeBSD


Автор: Therion 27.2.2007, 21:54
Разрабатывал сайт на Java под Windows (apache-tomcat-5.5.20, база данных находилась на машине с FreeBSD). Те сервлеты которые под виндой работали нормально (брали текст кирилицу и клали в базу) под FreeBSD в базу начали ложить что-то типа Ð»Ð°Ð¹Ð½Ð¾ (ну и вывидить естественно тоже). База осталась та же, только war файл перекинул на БСД-шную машину. На БСД машине  tomcat-5.5.20. Как решить такую проблему, так как сервера с виндой нет? Заранее благодарен.  smile 

Автор: Alita 28.2.2007, 10:27
Приведи код сервлета, в котором генерится страничка для ввода данных от пользователя и региональные настройки машины с FreeBSD (какая кодировка?).

Автор: ecologist 28.2.2007, 10:53
Чаще всего в такой ситуации надо сделать настройку Tomcat на кодировку UTF-8. Но т.к. база уже под виндовой кириллицей, то может быть стоит попробовать поиграть кодировками именно для винды - CP-1251 - может и не так - надо смотреть.
Если память не изменяет - надо зайти в файл <TOMCAT>/conf/web.xml
и там настроить кодировку. Во, нашел кусочек:

Код

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>javaEncoding</param-name>
            <param-value>UTF8</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>


Поищи что-то подобное у себя. Ну и покопаться придется. Удачи smile

Автор: Alita 28.2.2007, 12:08
Как сказал ecologist, можешь поиграться с настройками томката, можно не так глобально, не во всем сервере, а только в твоем сервлете  webapps/твое_приложение/WEB-INF/web.xml. А вообще данные, которые приходят на сервлет, кодируются по параметрам броузера и чтобы от этого не зависить sun рекомендует пользоваться установкой кодировки в самом сервлете:
Код

public class MsgHandler extends HttpServlet {
    
    private String encoding;
    
    public void init() throws ServletException {
        ServletConfig config = getServletConfig();
        encoding = config.getInitParameter("PARAMETER_ENCODING");
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        if (encoding != null) {
            request.setCharacterEncoding(encoding);
        }
        ...
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
}


Взято отсюда http://java.sun.com/developer/technicalArticles/Intl/HTTPCharset/index.html

Автор: Therion 1.3.2007, 22:01
Спасибо. Под виндой при у становке томката по умолчанию добавляется URIEncoding="utf-8", а под фрей нет. Прописал в server.xml и все стало работать нормально.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)