Кракозябры в базе данных — защищаемся от злостных закорючек.

Кракозябры

Кракозябры — это милые закорючки, которые появляются внезапно, прогоняют «удобочитаемые» слова и буквы и заполняют вместо них страницы и базы данных своим величеством. О том, как прогнать эти символы со страниц сайта, читайте интересную статью здесь. А сейчас мы выясним, почему кракозябры появились в базе данных и узнаем, как от них избавиться.

кракозябры в базе данных
Обратите внимание, среди букв латинского алфавита затесались странные монстры. Очевидно, они появились вместо кириллических символов! Но почему это произошло? Вероятно, нужно проверить:

  • Кодировку таблицы базы данных. Для того, чтобы проверить кодировку таблицы в phpMyAdmin, перейдите на вкладку «Операции». В блоке «Параметры таблицы» в поле «Сравнение» указана выбранная Вами кодировка. Я выбрала кодировку «UTF-8», поэтому в поле «Сравнение» оставляю «utf8_general_ci»:
Кодировка таблицы базы данных
Выбор кодировки таблицы БД
  • Кодировку столбцов таблицы базы данных. Кодировка столбцов должна совпадать с кодировкой таблицы. Если кодировку таблицы мы установили utf8_general_ci, то и кодировку столбцов тоже нужно установить utf8_general_ci. Для того, чтобы проверить и поменять кодировку столбца, откройте структуру таблицы и выберите нужный столбец для редактирования:
Выбор столбца таблицы для редактирования
Выбор столбца таблицы для редактирования

Перейдя в редактор, в поле «Сравнение» проверьте кодировку и при необходимости измените ее:

Выбор кодировки в столбце таблицы
Выбор кодировки в столбце таблицы
  • Кодировку Соединения с базой данных. В скрипте, осуществляющем подключение к БД, необходимо указать кодировку соединения, совпадающую с кодировкой таблицы. В PHP существует замечательная функция set_charset(«nazvanie_kodirovki»), предназначенная специально для этих целей. Если Вы используете mysqli, тогда вызов функции set_charset() будет выглядеть следующим образом:
$mysqli = new mysqli("localhost", "user_name", "user_password", "bd_name");
$mysqli->set_charset("utf8"); 

Если Вы используете mysql, то Ваш вариант установки кодировки соединения будет выглядеть примерно так:

mysql_connect("localhost","user_name","user_password");
mysql_select_db("db_name");
mysql_set_charset("utf8");

В расположенных выше примерах в качестве параметра функции set_charset() мы указали «utf8», установив тем самым кодировку соединения с базой данных Utf-8.

Перечисленные выше 3 пункта помогут Вам избежать неприятной встречи с кракозябрами в базе данных. А для того, чтобы защитить страницы сайта от встречи с этими «закорючками», рекомендую ознакомиться со статьей «Почему на сайте кракозябры и как от них избавиться?!». Успешной вам работы и удобочитаемых текстов!

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