Проблемы кодировки в JSP
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Проблемы кодировки в JSP Expand / Collapse
Автор
Сообщение
27.02.2007 17:32
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.04.2008 19:27
Сообщ.: 182, Visits: 1 528
Всем добрый день.

Как видно из темы, у меня проблемы с кодировкой в JSP. Не спешите отправлять меня на google.com, - я там уже был:)

Суть проблемы в следующем:

Есть два приложения: одно тестовое, другое рабочее.

В обоих приложениях есть JSP, на которых происходит практически одно и тоже.

Вот код JSP, тествого приложения:

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
    <head>
        <title>Simple jsp page</title>
    </head>
    <body>
        <%
            byte [] tstbuf = new byte[]{-47, -124};
            String testStr = new String(tstbuf, "UTF-8");
        %>
        <input class="text" maxlength="130" name="test_name_1" value="<%=testStr%>"/>
    </body>
</html>

Как видно из кода, - в скриплете создается строка testStr, Значение у этой строки = "ф" (инициализируем строку через массив байт, применяя кодировку UTF-8). Далее значение этой строки присваивается текствому полю.

В данном случае все РАБОТАЕТ, т.е. когда я загружаю эту jsp, то в браузере у меня в текстовом поле буква ф.

если я в данной jsp поменяю первую строку на

<%@ page contentType="text/html;charset=Windows-1251" %>

то все также будет прекрасно работать!!!

Это было тестовое приложение. Теперь переходим к другому случаю:

В реальном приложении также есть JSP, у которой также как и в тестовой задано:

<%@ page contentType="text/html;charset=UTF-8" %>

и также есть тестовый скриплет:

        <%
            byte [] tstbuf = new byte[]{-47, -124};
            String testStr = new String(tstbuf, "UTF-8");
        %>

и тестовое текстовое поле
        <input class="text" maxlength="130" name="test_name_1" value="<%=testStr%>"/>

Проблема в том что в этом случае, в текстовом поле не буква ф, а строка С„ .

Теперь еще один тест: ставим у этой jsp в качестве первой строки:

<%@ page contentType="text/html;charset=Windows-1251" %>

После этого все работает.

Как сами можете догадаца, - требуется чтобы корректно показывались не только русские буквы, но и немецкие, французские итп.

Соответственно Windows-1251 - не катит:( И необходимо чтобы заработал именно UTF-8

Собственно хотел узнать какие могут быть причины того что UTF-8 отказывается работать?

ЗЫЖ

также пытался в jsp  в начале указывать респонсу его контент тайп:

response.setContentType("text/html;charset=UTF-8");

не помогло:(

Сообщ. #911125
27.02.2007 17:57
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.03.2008 23:02
Сообщ.: 2 077, Visits: 21 402
POsmotrite nastrouyki pervogo i vtorogo servera
Сообщ. #911126
27.02.2007 18:52
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.04.2008 19:27
Сообщ.: 182, Visits: 1 528
Смотрел, - приложения крутятся на разных серверах weblogic(а), но настройки идентичны...
Сообщ. #911127
27.02.2007 22:27
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.03.2008 23:02
Сообщ.: 2 077, Visits: 21 402
charset-params
input-charset
resource-path/ * /resource-path
java-charset-name UTF-8 /java-charset-name
/input-charset
/charset-params

posmotrite esli oba servera imeut eto v weblogic.xml
Сообщ. #911131
27.02.2007 22:28
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.03.2008 23:02
Сообщ.: 2 077, Visits: 21 402
ubral otrkivayushie i zakrivaushie html tagi
Сообщ. #911132
28.02.2007 12:46
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.04.2008 19:27
Сообщ.: 182, Visits: 1 528
щас вообще задеплоил тествое приложение на тот же веблоджиковский сервер, что и рабочее.

Результат тот же рабочее не работает, тестовое - на ура.

При этом weblogic.xml у обоих приложений - одинаковые:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
    <session-descriptor>
      <session-param>
        <param-name>TimeoutSecs</param-name>
        <param-value>1800</param-value>
      </session-param>
    </session-descriptor>
    <jsp-descriptor>
        <jsp-param>
          <param-name>compileFlags</param-name>
          <param-value>-deprecation -g</param-value>
        </jsp-param>
        <jsp-param>
          <param-name>keepgenerated</param-name>
          <param-value>true</param-value>
        </jsp-param>
        <jsp-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
        </jsp-param>
        <jsp-param>
          <param-name>precompile</param-name>
          <param-value>false</param-value>
        </jsp-param>
        <jsp-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </jsp-param>
    </jsp-descriptor>
    <container-descriptor>
      <session-monitoring-enabled>true</session-monitoring-enabled>
      <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
    <context-root>TestEncodingInWevApp</context-root>
</weblogic-web-app>

отличаются только <context-root>

Сообщ. #911139
28.02.2007 19:09
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.03.2008 23:02
Сообщ.: 2 077, Visits: 21 402
dobavte to chto ya napisal v oba i vilozhite obe jsp.
Ya ne uveren chto oni odinakovie:))
Chudes ne bivaet
Сообщ. #911148
02.03.2007 13:35
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.04.2008 19:27
Сообщ.: 182, Visits: 1 528
Спасибо за помощь.

Чудес действительно не бывает:)

Проблему решил.

Рабочую jsp выложить не мог, т.к. во первых он большая(более 500 строк), во вторых архитектрура приложения такова, что эта jsp динамически загружается в другую родительскую, кот. в свою очередь загружается в другую и так пока не дойдет до верхнего уровня.

А багой было то что в одной из родительских jsp дочерняя подгражлась не директивой <jsp:include>, а через печать в скриплете:

pageContext.getOut().write(view.getOutput())

А вот в процессе получения этого стринга view.getOutput() и происходила ошибка, - там массив байт переводился в стринг, без указания кодировки...

Блин, как тяжело продолжать разрабатывать приложения, которое до тебя разрабатывало несколько последовательно сменяющихся разработчиков...

Архитектура, - ваще слов нет: половина бизнес логики зашита в jsp-шки...

Сообщ. #911219
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников,