Как включить вывод символов эмодзи

Поддержка символов Emoji в браузерах становятся все полнее и полнее, но на сайтах использующие PHP и MySQL символы могут не поддерживаться из-за неправильной кодировки, в результате выводятся одни ??? вместо 😺😸😹.

Так-как эмодзи являются символами юникода, то все скрипты и страницы сайта должны быть в кодировке UTF-8.

Перед началом сделайте бэкап сайта и базы данных, далее по пунктам:

1. В PHP при подключении к БД нужно указать кодировку utf8mb4:

SET NAMES 'utf8mb4'
SQL

В PDO имеется возможность указать кодировку при подключении:

$dbh = new PDO('
	mysql:dbname=db_name;host=localhost', 
	'user', 
	'password', 
	array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'")
);
PHP

Если используется расширение MySQL:

$link = mysql_connect('localhost', 'user', 'password');
mysql_select_db('db_name');
mysql_query("SET NAMES 'utf8mb4'");
PHP

Или MySQLi:

$mysqli = new mysqli('localhost', 'user', 'password', 'db_name');
$mysqli->query("SET NAMES 'utf8mb4'");
PHP

2. В MySQL тексты обычно хранятся в кодировке utf8_general_ci, эта кодировка не поддерживает эмодзи, поэтому нужно перекодировать их в utf8mb4_general_ci.

Запрос на перекодировку нужно сделать единоразово для всех таблиц базы, у которых планируется использование символов. Запрссы можно выполнить в PhpMyAdmin.

ALTER TABLE `table1` CONVERT TO CHARACTER SET utf8mb4;
ALTER TABLE `table2` CONVERT TO CHARACTER SET utf8mb4;
ALTER TABLE `table3` CONVERT TO CHARACTER SET utf8mb4;
ALTER TABLE `table4` CONVERT TO CHARACTER SET utf8mb4;
SQL
29.01.2020
Предыдущая запись Авторизация через .htaccess
Следующая запись Метрика API

Комментарии

, чтобы добавить комментарий.

Другие публикации

В данной статье сведен перечень приемов для правильной работы сайта в кодировке UTF-8.
17.09.2016 1784
Проблема кодировок часто возникает при написании парсеров, чтении данных из xml и csv файлов. Ниже представлены способы...
12.01.2017 5217
Как известно строковые функции PHP не правильно работают с русским текстом в кодировке UTF-8. Чтобы решить эту проблему...
18.12.2016 2084
Класс значительно упрощает работу с PDO, сокращает код. Реализован на статических классах и не требует создание...
14.03.2018 5779
Так как Instagram и Fasebook ограничили доступ к API, а фото с открытого аккаунта всё же нужно периодически получать и...
13.12.2019 1321
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
26.10.2018 3993