Что такое кракозябры и как их исправить
10 февраля 2020 Разное
Кракозябры — это искаженный текст, который выводится по причине не правильно установленной кодировки. Чаще всего это происходит когда русские символы в кодировке 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` 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'";);
Добавить комментарий