Какой из сборников utf8 является лучшим?
Я хочу сортировку UTF8 для поддержки:
- английский
- персидский
- арабский
- Французский
- японский язык
- китайский язык
Есть ли UTF8_GENERAL_CI
поддерживать все эти языки?
2 ответа
Да, это правильно. UTF-8 - это кодировка для набора символов Unicode, которая поддерживает практически все языки мира.
Я думаю, что единственная разница заключается в сортировке ваших результатов, разные буквы могут приходить в другом порядке на других языках (акценты, умлауты и т. Д.). Кроме того, сравнивая a
в ä
может вести себя по-другому в другом сопоставлении.
_ci
Суффикс означает, что сортировка и сравнение происходит без учета регистра.
http://www.collation-charts.org/ может быть интересным для вас.
Как UTF8_GENERAL_CI
было хорошее решение некоторое время назад. У него есть некоторые недостатки.
UTF8 в MySQL на самом деле использует 3 байта вместо 4, что вам нужно для таких символов, как эмодзи и новые азиатские символы.
Таким образом, MySQL имеет более новую кодировку с именем utf8mb4, которая фактически соответствует определению UTF8.
Для полной поддержки азиатских языков вам нужно выбрать utf8mb4.
Если вам нужна правильная сортировка на нескольких языках, используйте utf8mb4_unicode
или же utf8mb4_unicode_ci
вместо общего.
Более подробный ответ вы можете найти в разделе В чем разница между utf8_general_ci и utf8_unicode_ci