Начиная с MySQL 5.5.3 вы должны использовать utf8mb4, а не utf8. Обе эти группы относятся к кодировке UTF-8, но более старая utf8 имеет специфичные для MySQL ограничения, не дающие использовать символы, пронумерованные выше 0xFFFD.
Таким образом, больше не нужно использовать ни utf8_general_ci, ни utf8_unicode_ci.
Что касается новых версий кодировки utf8mb4_general_ci и utf8mb4_unicode_ci. То предпочтительной является unicode, а не general. Вариант utf8mb4_general_ci будет чуть более быстрым при сортировке (в настоящее время это уже неактуально), но имеет проблемы с сортировкой в определённых языках. Кодировка utf8mb4_unicode_ci лишена этих недостатков.
Итак, в настоящее время для баз данных и таблиц MySQL рекомендуется использовать кодировку utf8mb4_unicode_ci.
Совет: для сохранения места с utf8mb4, используйте VARCHAR вместо CHAR. В противном случае MySQL будет резервировать четыре байта для каждого символа в стобце CHAR CHARACTER SET utf8mb4, поскольку это максимально возможная длина. Например, MySQL должна зарезервировать 40 байт для столбца CHAR(10) CHARACTER SET utf8mb4.
Примечание: точнее utf8mb4_unicode_ci не совсем кодировка, в терминах MySQL это называется COLLATION («сравнение») и включает в себя набор символов, а также правила сравнения и сортировки. То есть utf8mb4_unicode_ci это COLLATION, а utf8mb4 это набор символов, а UTF-8 это уже и есть кодировка переменной длины.
Связанные статьи:
- PHP не отображает эмодзи из базы данных MySQL / MariaDB (РЕШЕНО) (61.3%)
- Ошибка «ERROR 1366 (22007): Incorrect string value» в MySQL / MariaDB (РЕШЕНО) (61.3%)
- Решение проблемы с ошибкой mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'gtid\_mode'': Table 'performance_schema.session_variables' doesn't exist (1146) (51.7%)
- Как импортировать и экспортировать базы данных в MySQL или MariaDB (51.7%)
- Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu (51.7%)
- Как разрешить доступ пользователю только к определённым таблицам в MySQL (MariaDB) (RANDOM - 51.7%)
Спасибо. Как раз то что искал. Мне было очень полезно.
Спасибо
Кратко, конструктивно и по делу
Была проблема
General error: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE)
решил ее поменяв кодировку поля на utf8mb4_unicode_ci, спасибо!