Ситуація, коли в результаті відкриття сайту замість необхідного нам змісту виводяться різні символи, що не читаються, виникає, коли кодування документа не збігається з кодуванням, яке встановлює сайту сервер. Головним принципом відсутності проблем із кодуванням є унікальність кодування у всьому вашому проекті.

Як же це простежити та усунути проблему з кодуванням на сайті?

Зміст

  1. Кодування в meta-тегу
  2. Кодування документа
  3. Кодування в .htaccess
  4. Кодування в базі даних MySQL

Кодування в meta-тегу

Пункт перший

Дуже просто. Почніть із самого документа. При створенні будь-якого HTML-документа його кодування вказується в блоку head в meta-тегу. Цей meta-тег виглядає наступним чином:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Цей тег свідчить про те, що документ використовує кодування UTF-8 або так званий Юнікод. Найбільш поширеними кодуваннями є UTF-8 і Windows-1251. Кодування UTF-8 працює з усіма символами і є найбільш зручним для сайтів, які містять матеріали різними мовами. Для кирилиці та англійських букв також часто використовують кодування Windows-1251. Вибір кодування документа завжди залишається на ваш розсуд, головне, щоб кодування документа і сервера збігалися. Якщо ви створюєте документ у кодуванні Windows-1251, у meta-тезі utf-8 слід замінити на windows-1251 .

Кодування документа

Пункт другий

Далі. Коли ваш документ готовий, і ви визначилися з його кодуванням, вказавши його в meta-тегу, важливо, щоб і сам документ був збережений у цьому кодуванні.

Кодування в .htaccess

Пункт третій

Якщо, коли ви відкриваєте документ у браузері, перед вами все одно з’являються некоректні символи, тут причина в налаштуваннях сервера. Проте вирішити цю проблему також не складно. Для цього вам знадобиться лише один рядок у файлі .htaccess. Цей файл знаходиться в кореневій директорії вашого сайту разом з індексним файлом. Якщо файл .htaccess відсутній у кореневій директорії, його слід створити. У цьому файлі потрібно прописати наступний рядок:

AddDefaultCharset UTF-8

Звісно, якщо ви використовуєте Windows-1251, замість UTF-8 слід прописати WINDOWS-1251. Потім потрібно зберегти файл .htaccess. Перезапуск сервера після цього робити не обов’язково.

Кодування в базі даних MySQL

Пункт четвертий

Після цього некоректні символи із сайту мають зникнути. Проте не звідусіль. Крім файлів сайт тримається ще на базах даних, таблиці та поля яких теж мають своє кодування. Кодування таблиць і полів бази даних має також збігатися з кодуванням всіх файлів сайту та самого сервера. Якщо ж після виставлення правильного кодування в базі даних перед вами все одно виникають незрозумілі символи, то проблема в кодуванні підключення до бази даних. Щоб вирішити цю проблему, підключіться до сервера баз даних з правами mysql root користувача.

mysql -u root -p

оберіть потрібну вам БД

USE ім'я_бази;

та виконайте наступний запит:

SET NAMES 'utf8';

Якщо ви використовуєте кодування Windows-1251, замість utf-8 слід прописати cp1251. Так це кодування називає сервер MySQL.

Найбільш рекомендованим кодуванням є UTF-8, оскільки воно підтримує найбільшу кількість символів і є практично універсальним для всіх мов, однак вибір завжди залишається за вами.

На цьому все. Ваш сайт повинен відображатися як слід.

Примітка

Часто виникають ситуації, пов’язані з тим, що .htaccess файл не працює. Це пов’язано з налаштуваннями Apache для вашого сервера або окремого віртуального хоста, на якому міститься ваш сайт. За опції у цьому файлі відповідає директива AllowOverride, яка використовується в конфігураційному файлі Apache — httpd.conf. Якщо дана директива виглядає так: AllowOverride None, сервер ігноруватиме файли .htaccess. Для вирішення цієї проблеми слід замінити None на All. Це дасть можливість перевизначати всі допустимі налаштування за допомогою файлу .htaccess. Після внесення змін до файлу httpd.conf необхідно або перезапустити веб-сервер (краще), або виконати команду service httpd reload (перечитати директиви без перезапуску веб-сервера), щоб зміни набули чинності.

Детальніше про віртуальних хостів ви можете прочитати у статті Налаштування віртуальних хостів в Apache.