У меня есть стандартная установка XAMPP на win7 (x64).
Имея свою долю проблем с кодированием в прошлом проекте, в котором кодировка mysql не совпадала с php-кодом, который, в свою очередь, иногда выводил html в другие кодировки, я решил последовательно кодировать все, используя utf-8.
Я только начинаю работать с HTML-разметкой и уже испытываю проблемы.
- Моя страница сохраняется с использованием utf-8 (без спецификации, Я думаю )
// update: оказывается, это НЕ тот случай. Файл был фактически сохранен с ISO_8859-1
. Позже я узнал об этом благодаря ответу Шерма Пендли. Мне пришлось вернуться и изменить настройки моего проекта (которые были установлены на «ISO-8859-1») на нужный «UTF-8».
- php настроен на .htaccess для обслуживания .php-страниц в utf-8 с:
AddCharset UTF-8 .php
- HTML имеет метатег, определяющий:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- Для проверки я установил используемый php
header('Content-Type:text/html; charset=UTF-8');
Страница, очевидно, обслуживается в utf-8 (Firefox и Chrome распознают ее как таковую), но любые специальные символы, такие как é
, á
или ¡
, будут просто отображаться как �
. Также при просмотре исходного кода.
При удалении настроек кодирования, упомянутых выше, все символы отображаются правильно, но обнаруженная кодировка показывает либо windows-1252
, либо ISO-8859-1
в зависимости от браузера.
Как получилось? Я очень озадачен. Я бы ожидал совершенно противоположного поведения.
Любой совет приветствуется, спасибо!
редактирование:
Надеюсь, это поможет немного больше. Это заголовок ответа (согласно Firebug)
HTTP/1.1 200 OK
Date: Sat, 26 Mar 2011 20:49:44 GMT
Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.1
Content-Length: 91
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8