Сопоставление MySQL для всех языков

В настоящее время я разрабатываю веб-сайт, который будет показывать материал практически для любого языка мира. И у меня проблемы с выбором лучшего сопоставления для определения в MySQL.

Какой из них лучше всего подходит для поддержки всех персонажей? Или самый точный?

Или просто лучше преобразовать все символы в юникод?


person Pedro Luz    schedule 20.09.2009    source источник


Ответы (4)


Обычно я использую 8-битный формат преобразования UCS/Unicode, который идеально подходит для любых (или большинства) языков.

utf8_general_ci

http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html

person stone    schedule 20.09.2009
comment
Я хотел бы предложить использовать utf8_unicode_ci вместо utf8_general_ci. Для получения дополнительной информации о том, почему Unicode лучше, чем обычный, @ stackoverflow.com/questions/766809/ - person Aistis; 07.08.2014

Принятый ответ неверен (возможно, он был правильным в 2009 году).

utf8mb4_unicode_ci — лучшая кодировка для широкой языковой поддержки.

Обоснование и подтверждающие доказательства:

Вы хотите использовать utf8mb4, а не utf8, потому что последний поддерживает только 3-байтовые символы, а вы хотите поддерживать 4-байтовые символы. (ref)

а также

Вы хотите использовать unicode, а не general, потому что последнее никогда не сортировалось правильно. (ссылка)

person Gerbus    schedule 07.03.2019
comment
Спасибо! Но в чем недостаток делать это по умолчанию для каждой БД/таблицы? Использует ли он больше места или сделает мои запросы/поиск неэффективными по сравнению с использованием настройки mysql по умолчанию (я думаю, latin1) - person supersan; 29.04.2020

Используйте utf8mb4 вместо utf8

utf8mb4_general_ci => support 1, 2, 3 or 4 bytes

а также

utf8_general_ci or utf8mb3_general_ci => support 1, 2 or 3 bytes

Это займет место на вашем диске по мере необходимости.

person Deepak Kumar    schedule 03.06.2021

Использование utf8mb4_unicode_ci или utf8mb4_general_ci может быть сложным и привести к неожиданному поведению.

Будьте в курсе.

Возможно, utf8mb4_unicode_bin может быть хорошим вариантом, если вы хотите избежать случаев, подобных приведенному ниже.

введите здесь описание изображения

person FabianoLothor    schedule 30.07.2021