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

Поддержка символов 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
Следующая запись Метрика API

Комментарии

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

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

Настройки кодировки UTF-8 на сайте
В данной статье сведен перечень приемов для правильной работы сайта в кодировке UTF-8.
2539
0
Перекодировка текста UTF-8 и WINDOWS-1251
Проблема кодировок часто возникает при написании парсеров, чтении данных из xml и csv файлов. Ниже представлены способы...
7343
+1
Дополнительные функции mb_string
Как известно строковые функции PHP не правильно работают с русским текстом в кодировке UTF-8. Чтобы решить эту проблему...
2836
0
Класс обертка для PDO
Класс значительно упрощает работу с PDO, сокращает код. Реализован на статических классах и не требует создание экземпляра класса.
9228
+4
Получить фото из Instagram без API
Так как Instagram и Fasebook ограничили доступ к API, а фото с открытого аккаунта всё же нужно периодически получать и...
7983
+6
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
7301
+5