Страница 1 из 1

Apache и PHP. Проблема с кодировками

СообщениеДобавлено: 15 ноя 2002, 14:21
Игорь Вершинин
Никто не сталкивался с такой проблемой. Документы подготовлены как PHP-документы, часть информации там HTML, как и положено. Указана кодировка Windows. Если загрузить подобную страницу через "explorer index.php", то все, что касается шрифты, отображается нормально. Русские буквы отображаются как русские. Если тот же документ загрузить через Apache+PHP кодировка устанавливается в Western (ISO). Как это побороть?

Вопрос не в тему! Как вообще живуч php под нетварью ?

СообщениеДобавлено: 15 ноя 2002, 19:16
max
Интересует мнение стоит ли пробовать ?
Какие впечатления ?

СообщениеДобавлено: 15 ноя 2002, 19:21
Михаил Григорьев
В *.php писали так...

Код: Выделить всё
<?php
Header('Content-Type: text/html; charset=windows-1251');
?>


А в IE автоопределение кодировок не помогает ???

А в апаче всё правильно настроено... по типу примерно так...
<IfModule mod_mime.c>

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .ee
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage he .he
AddLanguage it .it
AddLanguage ja .ja
AddLanguage kr .kr
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-br .pt-br
AddLanguage ltz .lu
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw

AddCharset Big5 .Big5 .big5
AddCharset WINDOWS-1251 .cp-1251
AddCharset CP866 .cp866
AddCharset ISO-8859-5 .iso-ru
AddCharset KOI8-R .koi8-r
AddCharset UCS-2 .ucs2
AddCharset UCS-4 .ucs4
AddCharset UTF-8 .utf8
AddCharset ISO-2022-JP .jis
AddCharset ISO-2022-KR .iso-kr
AddCharset ISO-8859-2 .iso-pl
AddCharset ISO-8859-8 .iso8859-8

<IfModule mod_negotiation.c>
LanguagePriority en ru da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
</IfModule>
</IfModule>

Можно в httpd.conf принудительно указать кодировку по умолчанию, примерно так:
AddDefaultCharset WINDOWS-1251
Но у меня при этом случались казусы разные...

СообщениеДобавлено: 15 ноя 2002, 19:22
Andrey Karyagin
Может быть это проблема конфигурации Apache, а не
PHP? Может быть я ошибаюсь?

СообщениеДобавлено: 15 ноя 2002, 19:27
Михаил Григорьев
По поводу живучести PHP...

У меня всё устойчиво работеет.... Проблем нет.... Абендов тоже.... 8)

СообщениеДобавлено: 18 ноя 2002, 13:37
Игорь Вершинин
Вот что стоит у нас во всех PHP-документах:

<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">

При "локальной" загрузке страницы это срабатывает. Через сервер никак. На "чужом" (у провайдера) сервере Apache (на FreeBSD) все работает тоже нормально. У нас (Apache 1.3.27 + PHP 4.0.8 ) не хочет. Абендов не наблюдается.
При всем при этом HTML-документы с подобным же заголовком отображаются нормально. Если переименовать документ HTML в PHP (например, index.html в index.php ничего более не меняя), то кодировки "слетают".
В Explorer можно принудительно установить тип кодировки, тогда все отображается нормально. Но при переключении на другую страницу кодировка Explorer'а все равно слетает на Western (ISO), несмотря на выключенный Автоматический Выбор Кодировки.

СообщениеДобавлено: 18 ноя 2002, 17:49
Михаил Григорьев
Игорь допишите во все *.php такое... (В самом начале файла)

Код: Выделить всё
<?php
Header('Content-Type: text/html; charset=windows-1251');
?>


А <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251"> удалите...

Должно заработать...

СообщениеДобавлено: 19 ноя 2002, 09:21
Игорь Вершинин
Попробовал. Не помогло... :( :( :(


Стоп!!! Помогло. Просто надо было еще в php.ini параметр engine перевести в On (обработка языковых расширений), а то по умолчанию PHP все выдает в ISO.

Спасибо. (пришлось собственное письмо редактировать. :wink: )