тел.: 8(961)008-77-55

пример неправильной кодировки сайта

Вы занимаетесь 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">, на самом деле это не только "правила хорошего тона".

 

Есть еще варианты? Пишите комментарии

 

Добавить комментарий