Отсутствие реакции на META.charset=utf-8
[HTML]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Перейти на главную <br />
Ваш заказ принят <br />
Скачать прайс <br />
</body>
</html>[/HTML]
Проблема: В броузерах нужную кодировку не отображает.
Все же правильно написал. Или может на меня три часа ночи действует :D
Валидацию проходит, да и все равно же все правильно. ПРобовал как мазиле, в осле 7-м, так и в оперной программе. Заставлял принудительно перевести в utf-8, но результат - еще хуще. Вывод напрашивается, что исходная кодировка плохая. Но пользуясь онлайн-инструментом:D, конвертация в тот же cp1251 происходит отлично. Проверял и на локалхосте, и на хостинге.
Из базы или что-то вообще?
Лечится в апаче так:
или
Из базы или что-то вообще?
Ну это не важно на самом деле. Допустим из шаблона.
[quote=Nixus]Cкорее всего веб-сервер подставляет кодировку в заголовке Content-Type: ....
[/quote]
Неа, не подставляет сервер ничего. Снифером проверил. Да и если так, то почему на других страницах отображает нормально? Или почему не только у меня так отображает?
Пробовал - ничего нового.
Сервер выдает:
Date: Thu, 13 Sep 2007 05:23:11 GMT
Server: Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_co
lor PHP/5.2.3
X-Powered-By: PHP/5.2.3
Set-Cookie: PHPSESSID=4afe7fa0dd396657dca9ca6121348d5f; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: hotel_city=0; expires=Fri, 12-Sep-2008 05:23:12 GMT
Set-Cookie: hotel_class=0; expires=Fri, 12-Sep-2008 05:23:12 GMT
Set-Cookie: hotel_id=0; expires=Fri, 12-Sep-2008 05:23:12 GMT
Content-Length: 405
Connection: close
Content-Type: text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <
title></title> <META http-equiv="Content-Type" content="text/html; charset=utf-
8"> </head> <body> Р*СџР*µСЂР*ВµР*№С‚Р*С‘ Р*Р…Р*В° Р*С–Р*В»Р*В°Р*Р†Р*
<br /> Р*’Р*°С€ Р*В·Р*В°Р*С”Р*В°Р*В· Р*С—РЎР‚Р*С‘Р*ЅСЏС‚ <br /> Р
ЂЎР*°С‚СЊ Р*С—РЎР‚Р*В°Р*в„–РЎРѓ <br /> </body> </html>
После перекодирования из utf-8 в windows-1251 получаем (заголовок ответа опущен):
title></title> <META http-equiv="Content-Type" content="text/html; charset=utf-
8"> </head> <body> Перейти РЅР° главР
<br /> Ваш заказ принят <br />
ать прайс <br /> </body> </html>
После еще одного перекодирования из utf-8 в windows-1251 получаем:
title></title> <META http-equiv="Content-Type" content="text/html; charset=utf-
8"> </head> <body> Перейти на глав
<br /> Ваш заказ принят <br />
ать прайс <br /> </body> </html>
Жестко выставляю кодировку - но браузерам "по барабану"
Поэтому копать в строну: быть уверенным, что скрипт РЕАЛЬНО закодирован в UTF-8, просмотреть, что выдает сервер в HTTP headers.
Выше я выложил пример, так если поставить принудительно броузером кодировку утф-8, то данные строки будут перекодированы в кириллицу нормально. А вот если такое делать у себя (т.е. на другом хосте - то делается еще хуже., так как происходит двойная ковертация утф-8 строки оптяь в утф-8 типа encode(encode(str))
2) у меня в .htaccess'е стоит AddDefaultCharset utf-8 Но тоже, ничего. Ставлю вручную РНР-кодом хидер header("Content-type: text/html; charset=utf-8"); и даже ответ приходит тот, что надо. Но вот только броузеру он ничего не говорит.
[COLOR=#142ce6][SIZE=1][SIZE=1][COLOR=#142ce6]HTTP/1.1 200 OK[/COLOR][/SIZE]
[SIZE=1][COLOR=#142ce6]Date: Thu, 13 Sep 2007 10:04:31 GMT[/COLOR][/SIZE]
[SIZE=1][COLOR=#142ce6]Server: Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.3[/COLOR][/SIZE]
[SIZE=1][COLOR=#142ce6]X-Powered-By: PHP/5.2.3[/COLOR][/SIZE]
[SIZE=1][COLOR=#142ce6]Content-Length: 405[/COLOR][/SIZE]
[SIZE=1][COLOR=#142ce6]Keep-Alive: timeout=5, max=99[/COLOR][/SIZE]
[SIZE=1][COLOR=#142ce6]Connection: Keep-Alive[/COLOR][/SIZE]
[SIZE=1][COLOR=#142ce6]Content-Type: text/html; charset=utf-8[/COLOR][/SIZE]
[/SIZE][/COLOR]
Вот так. наш контент-тип возвращается, но броузер смотрит на него сквозь пальци. а бы обиделся на броузера, но то же и в опере, и в ФФ.
2Alekciy, как кстати там проблема решилась?
Наверное, проблема скорее всего в серверах. И у меня на локалхочте, и у хостера. Но вот какая?
У меня тоже отобразилось.
как я уже говорил, данная конструкция пашет (в хидере ответа приходит данное указание), но браузер молчит по этому поводу
2Alekciy, как кстати там проблема решилась?
А хз. Автор не удосужился удостоит тему своим вниманием.
-----------------------------------------------
Как подсказали уважаемые форумчане, закодировано было два раза. Один раз - мной. Второй - Dreamweaver'ом. Всем спасибо.
Блокнот - рулит!
Блокнот - рулит!
Нифига. Рулит PHP Expert Editor.
+1 Опа, ты тоже его юзаешь? У меня 4.2, а у тебя какая версия?
Конечно юзаю. Почему бы и нет: бесплатен, удобен, функционален. Имхо, из бесплатных ему для PHP ровни нет. И естественно юзаю самую последную версию. Хотя там пару "фич" выявилось, причем с одной все было ок в более старных версиях, а в 4.2 отожгли )))
Я, конечно, мало что в этом понимаю...:) Но наверное в одном из мест следует убрать принудительную выдачу контента в utf-8. Наверное происходит двойное перекодирование.