Какая MySQL-сортировка лучше всего подходит для приема всех символов Unicode? - программирование
Подтвердить что ты не робот

Какая MySQL-сортировка лучше всего подходит для приема всех символов Unicode?

В настоящее время наш столбец сопоставляется с latin1_swedish_ci, а специальные символы в Юникоде, очевидно, удаляются. Мы хотим принять такие символы, как U+272A ✪, U+2764 ❤, (см. эту статью в википедии) и т.д. Я склоняюсь к utf8_unicode_ci, эта сортировка обрабатывает эти и другие символы? Мне не нужна скорость, так как этот столбец не является индексом.

Версия MySQL: 5.5.28-1

4b9b3361

Ответ 1

Сравнение - это наименьшее из ваших забот, о чем вам нужно подумать, это набор символов для столбца/таблицы/базы данных. Сопоставление (правила, определяющие, как данные сравниваются и сортируются) является лишь следствием этого.

MySQL поддерживает несколько уникальных наборов символов Unicode, utf8 и utf8mb4. utf8 поддерживает символы Unicode в BMP, то есть подмножество всех Unicode. utf8mb4, доступный с MySQL 5.5.3, поддерживает все Unicode.

Сравнение, которое должно использоваться с любым из кодировок Unicode, скорее всего, xxx_general_ci или xxx_unicode_ci. Первый алгоритм сортировки и сравнения не зависит от языка, последний является более полным независимым от языка алгоритмом, поддерживающим больше возможностей Unicode (например, рассматривая "ß" и "ss" как эквивалентные), но, следовательно, также медленнее.

См. https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-sets.html.