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