После последнего обновления PHPMyAdmin я вижу, что теперь набор символов по умолчанию — utf8mb4
.
Я хотел бы знать, в чем разница между utf8mb4
и utf8
и есть ли какая-то конкретная причина, по которой существует этот вариант, если мы можем его так назвать, utf8.
Кроме того, если я решу изменить набор символов своих таблиц и столбцов на utf8mb4
I, я хотел бы знать, не возникнет ли у меня проблемы.
добрый день, как упоминается в документации, начиная с MySQL версии 5.5.3 добавлен этот «вариант» utf. Теперь в чем разница?
UTF-8 Кодировка UTF-8 может представлять каждый символ в наборе символов Unicode, который находится в диапазоне от U+000 000 до U+10FFFF. Это 1 114 112 возможных символов. (Не всем этим кодовым точкам Unicode были назначены символы, но это не мешает UTF-8 кодировать их.)
Много раз мы использовали набор символов MySQL utf8 для баз данных, таблиц и столбцов, предполагая, что он соответствует кодировке UTF-8, описанной выше. Используя utf8, при условии, что можно сохранить практически любой символ.
Пример:
Теперь смотрите Warings:
Оказывается, MySQL utf8charset лишь частично реализует правильную кодировку UTF-8. Символы, состоящие из одного-трех байтов в кодировке UTF-8; закодированные символы, занимающие четыре байта, не поддерживаются.
Это влияет не только на символ ?, но и на более важные символы, такие как U+01F4A9 ( ?). Всего из 1 048 575 возможных кодовых точек использовать его нельзя. Фактически, MySQL utf8 может хранить только 5,88% ((0x00FFFF + 1)/(0x10FFFF + 1)) всех возможных кодовых точек Unicode. Правильный UTF-8 может кодировать 100% всех кодовых точек Unicode.
Теперь, если вы хотите изменить кодировку в своих таблицах или базах данных, потому что utf8mb4 полностью совместим с utf8, просто перед переносом чего-либо в нее создайте резервную копию своей информации.
Как комментирует документация :