Кириллица в логе ошибок апача под *nix - возможно?

rdva

Новичок
Под Windows (Денвер) в логе ошибок кириллица отображается без проблем, под *nix русский текст превращается в \xd0\xbd\xd0\xbe. Как победить?

PS: нашел похожий топик, но последний ответ (неутешительный) датирован 2005-м годом...
 

tony2001

TeaM PHPClub
кодировку браузера пробовали переключать из windows-1251 в UTF8 ?
 

rdva

Новичок
Мм, а это имеет отношение к апачу?

кодировку браузера пробовали переключать из windows-1251 в UTF8 ?
Да. И в браузере и в putty текст идентичный.

Задал одному админу этот вопрос, на что получил ответ: "windows/unix - разные системы кодировок и отображения. виндоус использует или юникод или cp1251 для русских языков. А unix пишет в posix." Ответ сей ясности не добавил. Полагал, что POSIX это стандарт для операционных систем, а не кодировка символов...
 

tony2001

TeaM PHPClub
и если вы себе копируете лог апача на виндовую машину, то там всё так же нечитабельно?
 

rdva

Новичок
Да, текст выглядит точно также, как в браузере / putty.
 

tony2001

TeaM PHPClub
http://mail-archives.apache.org/mod_mbox/httpd-cvs/200401.mbox/<[email protected]>

В общем, `CFLAGS="-DAP_UNSAFE_ERROR_LOG_UNESCAPED" ./configure ... && make install` и в логах вполне видно UTF8.

Так что, посиксы-шмосиксы и прочие происки шпионов тут ни при чем.
Просто не-ASCII считается небезопасными данными по-умолчанию и искейпится самим апачем (тут их можно понять - видеть в логах всякий бинарный вывод - сомнительное удовольствие).
 

fixxxer

К.О.
Партнер клуба
printf < /path/to/log/file

UPD а, не, так не получится

ну например так
perl -pe 's/\\x(([0-9a-f]{2}))/chr(hex($1))/eig' </path/to/log/file
 

rdva

Новичок
tony2001 и всем остальным большое спасибо за участие. Показал ветку админу, на что получил ответ:

Сделать можно. но:
1. это не правильно будет
2. Может сломать анализаторы логов, потому как они читают в логах и делают unescape обычно.
3. при кажом обновлении апач придется пересобирать.

Лучше использовать перекодировку, если вам надо смотреть логи. В логах просто идет escape последовательность кодов символов.

PS. программист не прав на счет посикса, потому как есть тако понятение как portable character set которое существует в posix. и это связно с локалью в которой работает процесс.
С пунктом 3 сложно не согласиться. О постскриптуме судить не берусь. Видимо придется продолжать ручками конвертить проэскейпенную кириллицу, благо делать это приходится не часто.
 
Сверху