Hi!
alr> Если маньяк администратор поставил strict, то он знал на что шел. А
alr> вот с тем, что совсем отключать обработку charset - это да, как-то
alr> неправильно в таком случае.. погорячился..
alr> Видно несколько вариантов:
alr> 1) по сочетанию бродилка/язык игнорировать язык, считая, что accept
alr> charset/language нам заданы не были
[skipped]
Давайте все-таки расставим точки над Ъ.
1) Механизм Language Negotiation уже существует в Apache (MultiViews),
каким-то образом он работает, хотя на практике неприменим из-за лени
пользователей.
2) mod_charset вступает в дело на предпоследней стадии обработки запроса,
когда известен окончательный URL (после всех Alias/Redirect) и так далее.
3) на этом этапе модулю известны:
a) URL и Filename
b) Language документа (if any)
c) Заголовки запроса - Accept/Accept-Charset/Accept-Language/User-Agent
d) естественно, всякие настройки
4) Задача заключается в том, чтобы выяснить charset документа, выдаваемый
в строке Content-Type и правила перекодировки из кодировки сервера в кодировку
клиента.
5) Предлагается:
a) сделать какой-то механизм объявления серверу, что такому-то Document
Language может соответствовать такой-то возможный список charsets.
Вариантов два:
- CharsetDecl koi8-r ru ua by
- CharsetLanguageBind ru koi8-r windows-1251 iso-8859-5
При этом в обоих случаях _удобно_ (мне как программисту) понимать под
Charset внутреннее название таблицы перекодировки (в большинстве
случаев оно совпадает с выдаваемым пользователю
Content-Type:... charset=name)
б) для случая, когда внутреннее имя и имя выдаваемое пользователю не
совпадают, нужна какая-то директива вида:
CharsetOverrideName internal_name language displayed_name
в) Заголовок Accept-Charset должен обрабатываться таким образом,
что во внимание принимаются только charsets, определенные для данного
языка документа.
г) К механизму MultiViews это не должно иметь почти никакого отношения, за
исключением того факта, что Document Language определяется директивой
AddLanguage (благо она уже есть).
г) Этот режим должен быть выключен по умолчанию. Для включения нужна отдельная
директива. Я предлагаю расширить CharsetMatchLanguage - ввести режим
strict который и будет делать вышеописанное.
Давайте дальнейшее обсуждение продолжать где-то с этой точки. А то есть
непонимание.
С уважением,Alex Tutubalin
--- GoldED 2.42.G1114+
"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.