Вы занимаетесь web-разработкой, делаете первые шаги и сталкиваетесь с многими проблемами, одна из самых распространенных - неправильная кодировка страницы. Для себя я определился, что нужно всегда использовать UTF-8. Не буду тянуть кота за хвост - сразу к решению проблемы.
Вариант номер 1 .htaccess
Причина: Все адекватные инструменты web-разработчика работают с кодировкой UTF-8, но, например, Денвер (по умолчанию) настрое на кодировку windows-1251 (CP1251).
Решение: Необходимо в найти в корне своего сайт файл .htaccess
, если его нет - создать и написать в нем AddDefaultCharset UTF-8
. Если файл уже существует - добавьте эту строку в начале или конце файла.
Как создать файл .htaccess в Windows
Если вас "угораздило" быть пользователем Windows, вы узнаете, что невозможно в ОС Win создать файл, у которого нет имени и расширение из восьми символов)) именно таким является файл .htaccess. Как же создать файл .htaccess в Windows? Вот самый простой способ из подручных средств:
- запускаем стандартную программу "Блокнот" (не рекомендую), лучше если на компьютере установлен NotePad++ (очень часто будет выручать пользователей Windows)
- набираем в файле како-то текст (абсолютно любой, даже один пробел)
- заходим в пункт меню "Файл" и нажимаем "Сохранить"
- при сохранении указываем нужное нам имя - .htaccess
Стоит сразу пояснить почему не рекомендую запускать "Блокнот". Блокнот сохраняет в кодировке windows-1251, если у вас появится дурная привычка использовать "Блокнот" для быстрого редактирования файлов - будет постоянно путаться кодировка.
Вариант номер 2 Sublim text + другие IDE
Причина: если вы еще не определились с редактором (IDE), в котором пишите код - вас ждет неприятный сюрприз. Вы, сначала, в Sublim text открыли файл, который создали в Блокноте, потом запустили какой-то Brackets и т.д. Я предпочитаю NetBeans + Gedit. Может оказаться, что половина (условно) файлов у вас имеют кодировку UTF-8, а другая CP1251 (win-1251). Как быстро отыскать такой файл - не подскажу, может в комментариях напишите.
Решение: Если проект небольшой - открываете все файлы с кодом в Notepad++ и заходите в пункт меню "Кодировка (Encoding)", здесь вы увидите кодировку своего файла. Если у вас установлена не UTF-8 (UTF-8 без BOM) - выбираете пункт "Преобразовать в UTF-8 (Convetr to UTF-8)" и сохраняете файл. Благо, что такая проблема встречается крайне редко.
Вариант номер 3 проблемы с базой данных
Причина: случай, когда данные из базы приходят в неправильной кодировке довольно редкий. Таблицы в базе MySQL, например c помощью PHPMyAdmin создаются (по умолчанию) в кодировке utf8_general_ci. Как мне кажется, нужно сильно постараться, чтобы данные из базы приходили в неправильной кодировке. Причины не опишу, нужно сильно напрячь фантазию...
Решение: при подключении к базе данных укажите кодировку, очень часто этот параметр опускается (я так же его не пишу). Например, при подключении к базе данных с PDO: $db = new PDO('mysql:host=localhost;dbname=test;charset=utf8', $user, $pwd);
. Если вы считаете, что без преобразования базы данных и всех ее таблиц не обойтись, то в PHPMyAdmin необходимо выполнить SQL-запрос для преобразования таблиц в кодировку UTF-8 (сначала сделайте резервную копию):
SELECT CONCAT( 'ALTER TABLE `', t.`TABLE_SCHEMA` , '`.`', t.`TABLE_NAME` , '` CONVERT TO CHARACTER SET utf8 COLLATE
utf8_general_ci;' ) AS sqlcode
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'Имя конвертируемой БД'
ORDER BY 1
LIMIT 0 , 90
Вариант номер 4 неправильный meta
Причина: скопировали часть кода из другого проекта, в котором была установлен кодировка win-1251 charset=windows-1251 в теге meta. Лучше ее не указать, чем указать неправильно ИМХО.
Решение: между тегами <head>...</head>
проверьте или добавьте тег meta со следующими атрибутами: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
, на самом деле это не только "правила хорошего тона".
Есть еще варианты? Пишите комментарии