Мне действительно нужно переключиться с VARCHAR на VARBINARY для UTF-8 в Mysql & PHP? - PullRequest
1 голос
/ 23 июня 2009

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

Ответы [ 4 ]

3 голосов
/ 23 июня 2009

Не обязательно. Поддержка MySQL UTF-8 ограничена только 3-байтовым UTF8, который включает в себя все вплоть до Basic Multilingual Plane Только если вам нужны символы в диапазоне 4 байта, вам нужно использовать хранилище BLOB; это редко, но не совсем редко. Посмотрите статью в Википедии, чтобы узнать, что вам будет не хватать, и решите, есть ли что-то, что должно быть.

2 голосов
/ 23 июня 2009

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

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

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

0 голосов
/ 01 августа 2012

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

VARCHAR - это «СИМВОЛ С ПЕРЕМЕННОЙ ДЛИНОЙ», который безошибочно адаптируется к количеству байтов, необходимому для хранения символов в соответствии с выбранным символом.

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

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

0 голосов
/ 23 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...