Действительно ли мне нужно переключаться с VARCHAR на VARBINARY для UTF-8 в Mysql и PHP?

StackOverflow https://stackoverflow.com/questions/1030234

Вопрос

Действительно ли мне нужно переключаться с VARCHAR на VARBINARY и TEXT на BLOB для UTF-8 в Mysql и PHP?Или я могу придерживаться полей CHAR / TEXT в MySQL?

Это было полезно?

Решение

Может быть.Как джейсон как указывалось, и я не заметил, MySQL UTF-8 отображает только базовую многоязычную плоскость.Однако в руководстве указано, что "Их [utf8 и ucs2] достаточно почти для всех символов на основных языках", так что, вероятно, это безопасно, но вы можете захотеть проверить, что находится в базовой многоязычной плоскости, просто чтобы быть уверенным.

Оригинальный Ответ

Пока ваша база данных использует UTF-8, вы должны иметь возможность использовать VARCHAR и TEXT.(В качестве дополнительного примечания, Руководство пользователя MySQL рекомендует использовать VARCHAR вместо CHAR с UTF-8 для экономии места.Поскольку это так, использование VARCHAR и TEXT должно быть безопасным.)

Другие советы

Вот хорошая ссылка о работе с UTF-8 в PHP. MySQL очень хорошо работает с UTF-8, если вы правильно настроили параметры сортировки. С другой стороны, у PHP много проблем.

Конечно, безопасно использовать VARCHAR для хранения текста UTF-8, и для этого не требуется VARBINARY.

VARCHAR - это «CHARACTER WITH VARIABLE LENGTH», который безошибочно адаптируется к количеству байтов, необходимому для хранения символов в соответствии с выбранным CHARCODE.

Существует также причина, по которой поддержка MySQL UTF-8 ограничена только 3 байтами. Вам нужно будет погрузиться в соответствующие документы UTF-8, в которых рассказывается о процедуре кодирования UTF-8, чтобы понять, почему это правильно.

И последнее, но не менее важное: если вы не уверены в UTF-8, вы всегда можете подписаться на UTF-16. Тем не менее, вы все равно будете использовать VARCHAR, поскольку он все равно будет безошибочно адаптироваться к правильной длине байта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top