Skip to main content

Что такое кракозябры и как их исправить

Что такое кракозябры и как их исправить

Кракозябры — это искаженный текст, который выводится по причине не правильно установленной кодировки. Чаще всего это происходит когда русские символы в кодировке CP-1251 открываются в юникоде UTF-8.

Лучше всего в проектах всегда использовать кодировку UTF-8, так как эта универсальная кодировка и она поддерживает большинство символов. С ней будет меньше всего проблем, а сайт будет корректно отображаться в любой точке мира.

Как бороться с кракозябрами?

Сохранять файлы в UTF-8 без BOM

Во первых исходные файлы должны быть сохранены в кодировке UTF-8 без BOM. Это значит, что текст не будет содержать пустых символов, которые могут мешать интерпретации исходного кода или отображаться на сайте в виде точек. Преобразовать тексты можно в бесплатном редакторе Notepad++ в меню Кодировки → Преобразовать в UTF-8.

Добавлять мета-тег charset

В тегах <head></head> можно указать кодировку для браузера следующим тегом:

<meta charset="UTF-8" />

Указывать в PHP-функции header()

В самом начале файла .php добавляем следующий код:

header('Content-Type: text/html; charset=utf-8');

Указывать кодировку в файле .htaccess

Ещё один способ указать кодировку в файле .htaccess

AddDefaultCharset utf-8

Кодировка базы данных MySQL

Кодировка сайта и базы данных MySQL должны совпадать. Если это не так, то следует конвертировать базу данных в кодировку UTF-8. Следующий запрос конвертирует указанную таблицу в кодировку UTF -8:

ALTER TABLE `db_name`.`table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Конвертируем сразу все таблицы. Этот запрос будет работать в MySQL версии 5 и выше:

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` =  'My_DB_for_convert'
ORDER BY 1 
LIMIT 0 , 90

И указать кодировку базы данных в подключении. Для этого после подключения к БД добавляем:

mysql_query("SET NAMES 'UTF8'");

В 1С-Битрикс например, кодировку базы можно указать в файле /bitrix/php_interface/after_connect.php:

$DB->Query("SET NAMES 'utf8'";);
Похожие записи
Git для начинающих

Git - это бесплатная система контроля версий с открытым исходным кодом. Это звучит невероятно скучно... Читать далее

Chart.js примеры создания диаграмм и графиков

Если у вас есть насыщенный информацией веб-сайт или приложение, вы можете визуализировать свои данные, чтобы... Читать далее

Instagram виджет для сайта

К сожалению в Instagram нет стандартного функционала для вывода виджета на сайт, такого как например... Читать далее

Бесплатный фотосток без регистрации

freepic - это бесплатный фотосток, поддерживающий русский язык, на котором можно совершенно бесплатно и без... Читать далее

Как очистить кэш шаринг постов в соц сетях

Довольно распространённая проблема, когда после добавления ссылки на внешнюю страницу в соц. сеть, её данные,... Читать далее

Определить CMS сайта плагин

Wappalyzer - это кроссплатформенная утилита, которая определяет технологии, используемые на веб-сайтах. Она обнаруживает системы управления... Читать далее

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

*

code