2016-01-04 2 views
5

У меня есть таблицы MySQL с utf8mb4 полями и другими с utf8.Могу ли я безопасно использовать соединение utf8mb4 с столбцами utf8?

Безопасно использовать utf8mb4 в строке соединения PDO для всех таблиц? Или мне нужно преобразовать все в utf8mb4 или запустить два разных соединения PDO?

ответ

2

Краткий ответ: NO, это не безопасно.

Если данные имеют utf8mb4 символы, и вы используете соединение кодировок MySQL utf8, вы столкнетесь с проблемами, поскольку MySQL utf8 кодировок поддерживают только символы BMP (до 3-х байт символов).

Моя рекомендация состоит в том, чтобы преобразовать все таблицы в utf8mb4 для полной поддержки UTF-8. Кроме того, utf8mb4имеет обратную совместимость с utf8.

+1

Обратная совместимость, но с некоторыми проблемами: максимальная индексируемая длина с InnoDB падает от 255 до 191 символов, а поля с фиксированной длиной (например, CHAR) используют еще один байт на символ –

+0

@the_nuts Хорошо заостренный. Подробнее [здесь] (https://dev.mysql.com/doc/refman/5.7/en/charset-unicode-upgrading.html) – mimimito

Смежные вопросы