utf8_unicode_ci или utf8_general_ci?
7 марта 2009
Какую таблицу из двух выбрать для своей базы данных в случае использования UTF?
utf8_general_ci
Убирает все акценты и приводит к верхнему регистру: ÀÁÅåāă = A, ü = U.
Не очень точно отрабатывает при сортировках. Иногда полезно при поиске. Быстрее utf8_unicode_ci.
Подходит для Русского. При использовании Белорусского и Украинского сортировка будет не верной.
utf8_unicode_ci
Довольно точно при сортировке и поиске. Например, ß (немецкий эсцет) будет при сортировке располагаться рядом с ss, как ему и положено. Медленнее utf8_general_ci.
Замечательно подходит для Русского, Белорусского и Украинского.
Итог
Если проект исключительно русскоязычный и скорость поиска и сравнения критична — можно остановится на utf8_general_ci. Если же есть планы по поддержке большего количества языков — лучше использовать utf8_unicode_ci.
Полные таблички utf8_unicode_ci и utf8_general_ci (там, кстати, и все остальные есть).
UPD 2016: Кодировку на сегодняшний день для MySQL рекомендую utf8mb4
. Collation utf8mb4_unicode_ci
потому что юникод расширился несколько и в utf8
не всё влезает.
Комментарии RSS по email OK
Спс, буду знать!
А какие будут проблемы с сортировкой в белорусском языке при использовании utf8_general_ci ?
Лично не проверял, но скорее всего проблема будет с сортировкой «і», которая будет рассматриваться как латинская «і» и соотвественно не будет стоять перед «й».
Я тоже за юникод. Все должно быть верно. Проблемы с сортировкой при использовании general - не допустимы.
Сейчас при подключении скриптов к базе стоит "latin1". Как можно конвертировать базу, содержащую много русского текста, в utf8_unicode_ci, чтобы ничего не испортилось?
allmoney.ws
А текст реально в какой кодировке?
А на сколько general быстрее unicode? На 1% или на 20%... будет ли ощутимая разница.
И еще хотелось бы узнать примеры неправильной сортировки украинского при utf8_general, может это не особо и важно.
Пример тут простой: «I» будет идти самой первой, а не как надо. Насчёт % — тут зависит от базы.
Коротко и ясно! Спасибо большое!
Действительно, на сколько будет быстрее работать "general", чем "unicode". Делаю новый сайт на "joomla" и встал вопрос: "В чем разница между этими кодировками?"
По поводу utf8mb4_unicode_ci. В RBAC миграции Yii2 зашито utf8_unicode_ci. Перевожу просто проект, обратил внимание.
Именно в них полный набор юникода, скорее всего, не понадобится.