Всех с Наступающим(и), удачи и благ.
On Mon, 22 Dec 1997, Alex Tutubalin wrote:
> Для всеобщего обсуждения.
>
Восстанавливаю исходную задачу к Деду Морозу. ;)
1. хочется (возможно, сдуру) построить 2-язычный сайт,
в котором есть документы (и cgi, и проч. динамика) как на русском,
так и на английском, да еще и из-под одного и того же демона.
(Конечно, можно держать 2х и больше апачей - "родного" и русского, но
неохота).
2. Хочется сделать это более красиво (это точно сдуру ;),
а именно сопровождать в http-заголовках русские документы, как уже
умеет apache-rus,
а английские - указанием charset: ISO-8859-1 (или вообще ничего не
сообщать
про charset, оставляя его на умолчание смотрелки).
Кстати, полно сайтов, пользующих русский апач, которые
не указывают charset даже на русские документы -
это есть грабли, описанные у Чернова
http://www.nagual.pp.ru/~ache/koi8.html)
и относятся эти грабли __не_только_ к koi8-r.
3. Все это приблизительно решается даже в рамках тех рычагов конфига,
которые уже есть, за исключением, как минимум, случая с
Netscape Communicator 4. (все версии, все платформы)
Этот гад всегда в запросе говорит Accept-Charset,
причем его параметры не регулируются менюшками,
а отхачить настройки лично своей копии браузера - не оно. ;-)
Надо сказать, (для тех, кто не знает) что
Communicator 4.x для платформ от Microsoft
понимает koi8-r наряду с windows-1251, обходясь без специально хаченных
фонтов под koi8, в отличие от Communicator 4.x для X11, который
не умеет внутри себя сделать recode -wk для документов в windows-1251.
;)
4. Так вот - вариантов ровно 2. ;)
1) Можно решить, что сайт на 2х языках, да еще и соблюдающий стандарты
- блажь, и не стоит возни.
2) Попытаться добавить новую функциональность, не отменяя сделанного,
для обхода криво написаного, но повсеместно распространенного,
Communicator 4.
3) вариант последний - убить все маргинальные платформы нафиг, оставить
единственную русскую кодировку windows-1251 навсегда, у всех,
и политически запретить использовать все, что изготовлено
не на фирме Microsoft,
:)))))
> vr> Все это хочется без специальных приседаний иметь в конфиге наряду с
> vr> koi8-r, Windows-1251, и т.п.
> vr> Засада с теми броузерами, которых трудно отучить _всегда_ в запросе http
> vr> ставить
> vr> "Accept-Charset... ISO-8859-1,....",
> vr> типа Navigator 4.x.
> Параметр вида
> CharsetIgnoreBrokenAccept "Mozilla/4.0" "iso-8859-1,*,utf-8"
> спасет умирающего кота ? Имеется в виду, что описывается явно пара
> User-Agent/Accept-Charset и при совпадении обоих значений AcceptCharset будет
> проигнорирован.
На первый взгляд, именно это и спасет.
Однако, такое поведение должно быть как-то согласовано с
CharsetPriority и CharsetSelectionOrder, и может, еще какими...
...хотя, если сначала проигнорировать, а после напустить всю логику
перебора кодировки, включая CharsetAgent, то все будет правильно.
Однако учетывать исключения - тоже не дело, IMHO.
[...]
> Это тоже, по мотивам нашего того еще (какого не помню :) разговора попало в
> ToDo.
(который, потерялся? ... я бы сейчас не возникал... ;)
> Имеется в виду директива вида
> CharsetDisable koi8-r windows-1251 ....
> Т.е. Charset'ы из списка Disable не будут приниматься во внимание для данного
> .htaccess/<Location> и так далее.
Черт знает...
попытаюсь более точно сформулировать:
IMHO, у русских текстов (ru, не en), __не_может_быть_
кодировки ISO-8859-1 по определению ;-)
Поэтому как-то странно привязывать к месту на диске.
Другой вопрос, что .htaccess/<Location> - один из вариантов сказать,
что в этом месте живут только русские доки.
Более точно было бы конфигом не запрещать, а объявлять
списки -
CharsetLangCharset ru koi8-r windows-1251 ibm866 ....
CharsetLangCharset en ISO-8859-1
но тогда возникает та самая проблема чехов, которых
Билл наградил еще круче, и еще пара граблей... ;-)
> Имеется в виду такой извращенный механизм:
> Директивы CharsetDecl/CharsetRecodeTable в настоящее время можно писать только
> для сервера в целом. По той причине, что написание в <Directory> и так далее
> будет вызывать чтение таблиц по каждому обращению, что неприемлемо.
>
> (Предлагаемый) Механизм CharsetDisable позволит объявить все используемые
> charsets в основном конфиге, а потом запретить русские Charsets для одной части
> сервера и нерусские для другой.
IMHO, все же не запретить, а сказать, что здесь - вот эти кодировки
допустимы, а там - по другому списку.
> vr> все же и в конфиге описывать, и различать, и сообщать броузеру.
> vr> Я так понимаю, что самое сложное - отличить русские документы от
> vr> нерусских, польских, и т.п. ;-)
> Ничего сложного. На это есть AddLanguage. Т.е. совсем strict механизм может
> предлагать вообще не обрабатывать автовыбор charset если язык документа не
> совпадает с языком language. Правда, на мой взгляд, это слишком жестокое
> решение и народ меня не поймет. Хотя твою конкретную проблему это бы решило.
Вот. Как скажет народ?
IMHO, это был бы наиболее четкий вариант, если учесть все детали, и не
факт, что с конфигами
в этом случае будет больше возни. Особенно тем, кому достаточно
одного языка на всем сайте - новые директивы им просто будут
по-барабану...
> С уважением,Alex Tutubalin
Удачи,
Sergey Vovk, | http://www.macomnet.ru/~vsv/
sysadmin | voice: +7(095)973-4002, 973-4003
"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.