У меня есть стандартная установка 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