День добрый!
Возникла небольшая заковырка.
Постраюсь изложить последовательно.
Имею:
FreeBSD 3.3.
Apache Rus 1.3.12
Apache Jserv для Ajp и конекта к Tomcat 3.1. на порт 8007
Tomcat 3.1. - для Java Sevlets и JSP
Получил непонятки следущего характера:
1. В сервлете лежат строки
out.println("юФП ИПЮЕЫШ(koi8).<br><br>");
out.println("-вR еRз_им(dos).<br><br>");
out.println("Что хочешь(1251).<br><br>");
2. Перед отсылкой модулю апача mod_jserv по протоколу Ajp делаю
установку Content-type: text/html; charset=windows-1251
3. Апач настроен с CharsetSourceEnc windows-1251 (Def тоже самое)
4. Идет запрос от Линкса
lynx -mime_headers http://.../.../serlet
Видимый мне процесс:
1. К апаче приходит данный запрос.
2. Апач с помощью директив понимает, что его надо зашлюзить на
localhost:8007 через протокол Ajp12. Шлюзит.
3. tomcat получает запрос, разбирает REQUEST_URI, определяет
сервлет, который нужно по этому запросу поднять.
4. servlet формирует http response, с выше указанными заголовками.
5. tomcat его буфферезирует и отсылает толи разом, толи пачками
по 8Кб к Апачу на mod_jserv.so
ВОПРОС: Включается ли при этом механизм mod_jserv ?
Мне пока не вериться, что Западный апликэйшен сервер будет
заниматься перекодировками, считая, что все его сервлеты лежат в
koi8-r (по крайне мере еще не нашел в его сырцах подобной штуки).
6. Апач получает его, считая, что это windows-1251
7. Основываясь на данных, полученных от браузера - выполняет
соответствующие перекодировки.
8. Итого:
Lynx получает:
--------------------------------------------------------
HTTP/1.1 200
Date: Thu, 13 Apr 2000 16:08:20 GMT
Server: Apache/1.3.12 (Unix) tomcat/1.0 PHP/3.0.15 rus/PL29.4
Content-Language: ru
Servlet-Engine: Tomcat Web Server/3.1 Beta (JSP 1.1; Servlet 2.2; Java 1.1.8; FreeBSD 3.3
STABLE x86; java.vendor=Sun Microsystems Inc., port by java-port@FreeBSD.org)
Set-Cookie2: JSESSIONID=To1043mC7348963929945455At;Version=1;Discard;Path="/ajsp"
Set-Cookie: JSESSIONID=To1043mC7348963929945455At;Path=/ajsp
Connection: close
Content-Type: text/html; charset=koi8-r
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Last-Modified: Thu, 13 Apr 2000 16:08:20 GMT
<h1>Servlet</h1>
(It's a GET-calling.)<br><br>
Что хочешь(koi8).<br><br>
?Б? Е?Г?ХЛ(dos).<br><br>
вРН УНВЕЬЭ(1251).<br><br>
IE получает тоже самое, только в windows-1251 и при этом видна коевая
строчка.
Отличительная особенность: была выполнена кодировка при пересылке
через Ajp протокол, так как 1251 и dos приехали сильно закореженные и
браузер их не смог по кодировочке раскодировать. (сорри за сленг )
------------------------------------------------------------------------
Вариант 2
-----------------------------------------------------------------------
1. В сервлете лежат строки
out.println("юФП ИПЮЕЫШ(koi8).<br><br>");
out.println("-вR еRз_им(dos).<br><br>");
out.println("Что хочешь(1251).<br><br>");
2. Перед отсылкой модулю апача mod_jserv по протоколу Ajp делаю
установку Content-type: text/html; charset=koi8-r
все остальное тоже самое.
Lynx получает:
-------------------------------------------------------
********************
Content-Language: ru
Content-Type: text/html; charset=koi8-r
,......
<h1>Servlet</h1>
(It's a GET-calling.)<br><br>
юФП ИПЮЕЫШ(koi8).<br><br>
╛в╕ е╕з=им(dos).<br><br>
Что хочешь(1251).<br><br>
ИЕ получает тоже самое, при этом никаких перекодировок на стороне
сервера не произошло, так как доса и кои спокойно различались при
переключении кодировок.
Итого несколько вопросов:
1. mod_charset повешен на все входящие и приходящие запросы по любому
внешнему(внутреннему) протоколу?
2. На основе чего тогда в данном случае апач считает, что по дефолту
стоит koi8-r?
С уважением, Alexey V. Meledin <avm@webclub.ru>
> InterForge Developers Group, St-Petersburg, Russia
New: http://www.crossroad.ru; http://www.garoway.com
> > > > > > "InterForge to Forge Ahead" > > > > > > >
=============================================================================
= Apache-Rus@lists.lexa.ru mailing list =
Mail "unsubscribe apache-rus" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/mail-archive =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.