|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alex L Demidov 2:5051/17 19 Sep 2005 15:24:29 To : All Subject : mod_charset_lite в apache2 --------------------------------------------------------------------------------
скрипта перекодируется.
При upload'е файла через этот скрипт возникает следующая проблема:
Если в этом файле встречаются символы, которые есть в Windows-1251, но
которых нет в KOI8-R (например левые и правые кавычки), получаем 500
Internal Server Error и запись в логе
(22)Invalid argument: xlate filter - returning error.
Hасколько я понял, проблема в том, что mod_charset_lite для
перекодирования использует iconv, который по умолчанию в случае
невозможности однозначной трансляции символов возвращает ошибку.
Проблему пока решил вставив в соответствующее место в
apr_xlate_conv_buffer из srclib/apr-util/xlate/xlate.c вызов
iconvctl(convset->ich, ICONV_SET_DISCARD_ILSEQ, &one)
который подсмотрел в коде iconv(1)
Hо текущее решение меня не очень устраивает, поскольку:
а) символы просто отбрасываются, а этому конкретном CGI-скрипту как раз
нужны кавычки.
б) нет уверенности что этот патч сделан корректно и в какой-то момент не
уронит сервер.
Поэтому возникают следующие вопросы к общественности:
1) Известны ли другие решения этой проблемы? Меня бы устроило нечто, что
знает только Windows-1251 и KOI8-R, но транслирует без потери
символов, преобразую те левые и правые кавычки к обычным кавычкам.
Плюс еще хотелось бы чтобы контент перекодировался и выдавался в той
кодировке, которая указана в Accept-Charset в запросе, а не в той
кодировке, которая указана в конфиге сервера через DefaultCharset.
2) Судя по датам новостей на http://apache.lexa.ru/ нормального русского
апача для версии 2.0 ожидать не приходится?
--
Alex L. Demidov (ALD9-RIPE).
--- ifmail v.2.15
* Origin: Home (2:5051/17@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/8956f3736a35.html, оценка из 5, голосов 10
|