@Alk90
php, mysql, jquery, css, html, api

Как правильно использовать кодировку utf8mb4?

Всем привет. У меня в таблице не сохрняются символы emoji, я почитал, что мне нужно установить кодировку utf8mb4, вместо utf8 которая используется сейчас.
В связи с этим у меня появилось несколько вопросов.
1. Правильно ли я сделаю, если установлю кодировку utf8mb4 только в тех столбцах, которые должны хранить символы emoji?
2. Сейчас по умолчанию php использует кодировку соединения с БД - utf8, что мне нужно сделать, установить по умолчанию utf8mb4 для соединения с БД или перед каждым запросом предусматривающим кодировку utf8mb4, менять соединение с БД на лету?
3. Какие есть подводные камни для использования кодировки utf8mb4, в частности не влечет ли она какую-то неправильную работу с обычными utf8 символами?
  • Вопрос задан
  • 408 просмотров
Решения вопроса 1
@mega-ezz
Недавно тоже заставлял БД хранить Emodji. Сделал так:
1. сменил кодировку таблицы на utf8mb4_general_ci
2. сменил кодировку необходимого поля таблицы на utf8mb4_general_ci
3. сменил кодировку php соединения с БД: $mysqli->set_charset('utf8mb4');

Полет нормальный, никаких подводных камней не обнаружено.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AVKor
Вот такие настройки должны быть, чтобы:
MariaDB [(none)]> SHOW VARIABLES  WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+------------------------+
| Variable_name            | Value                  |
+--------------------------+------------------------+
| character_set_client     | utf8mb4                |
| character_set_connection | utf8mb4                |
| character_set_database   | utf8mb4                |
| character_set_filesystem | binary                 |
| character_set_results    | utf8mb4                |
| character_set_server     | utf8mb4                |
| character_set_system     | utf8                   |
| collation_connection     | utf8mb4_unicode_520_ci |
| collation_database       | utf8mb4_unicode_520_ci |
| collation_server         | utf8mb4_unicode_520_ci |
+--------------------------+------------------------+
10 rows in set (0.00 sec)

Про PHP не в курсе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы