| Это еще один аргумент в пользу того, что разбирать проблемы с
| iconv(3) должен администратор web-сервера, а не end-user.
|
| Для таких разборок специально придуман error_log, и задача автора
| mod_charset* - наполнить его нужными кракозябрами. ;)
Лично я не понимаю, что хорошего может настроить админ. Ну выдаст ему
сервер в лог сообщения о том, что на его сайте используется десяток
левых симоволов, причем пара-тройка из них multibyte. А дальше? Как
должен быть устроен конфиг, чтобы в нем можно было описать адекватную
реакцию на это? Не знаю...
Мое мнение:
- "левье" нужно заменять на '?'
- в лог писать о таких заменах надо
- кому нужно перекодировать любимый символ -- пусть патчит iconv
Есть, кстати, еще одна идея. Можно неперекодируемые символы превращать в
html-entities. Подготовка такой таблицы -- вещь муторная, но реальная: в
html 4 их наопределяли. Если пропатчить iconv будет почти хорошо, т.к.
за раскрытие entity (и, возможно, превращении ее в '?') будет нести
ответственность уже браузер. IE с этой задачей справляется неплохо, а с
NN, конечно, проблем будет хватать.
И вот еще. Кроме проблемы, чего делать с символами, которые не
помещаются в выходой кодировке, есть и другая проблема: что делать с
кривыми последовательностями во входном потоке. По моему, такие фокусы
нужно не раздумывая превращать в '?'. Правда последствия этого могут
быть довольно смешными: libiconv-1.7 заметно различает Windows-1252 и
iso-8859-1 (=latin-1), а вот Microsoft -- нет (обе кодировки считаются
как 1252). Так что на сайте, который был собран каким-нибудь
FrontPage'ем и сдуру объявлен как latin-1 можно легко получить гроздья
вопросительных знаков. Такие дела.
Дмитрий Пашко
"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.