<rmcreative>

RSS

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

  1. №1346
    DeadLy
    DeadLy 07 марта 2009 г., 11:52:54

    Спс, буду знать!

  2. №1347
    Виктор
    Виктор 07 марта 2009 г., 12:55:17

    А какие будут проблемы с сортировкой в белорусском языке при использовании utf8_general_ci ?

  3. №1348
    Sam
    Sam 07 марта 2009 г., 13:27:14

    Лично не проверял, но скорее всего проблема будет с сортировкой «і», которая будет рассматриваться как латинская «і» и соотвественно не будет стоять перед «й».

  4. №1349
    Ярослав
    Ярослав 08 марта 2009 г., 2:05:51

    Я тоже за юникод. Все должно быть верно. Проблемы с сортировкой при использовании general - не допустимы.

  5. №1350
    allmoney.ws
    allmoney.ws 08 марта 2009 г., 12:56:46

    Сейчас при подключении скриптов к базе стоит "latin1". Как можно конвертировать базу, содержащую много русского текста, в utf8_unicode_ci, чтобы ничего не испортилось?

  6. №1351
    Sam
    Sam 09 марта 2009 г., 0:24:53

    allmoney.ws

    А текст реально в какой кодировке?

  7. №1815
    Risen
    Risen 28 авг. 2009 г., 17:01:03

    А на сколько general быстрее unicode? На 1% или на 20%... будет ли ощутимая разница.

    И еще хотелось бы узнать примеры неправильной сортировки украинского при utf8_general, может это не особо и важно.

  8. №1818
    Sam
    Sam 28 авг. 2009 г., 17:27:46

    Пример тут простой: «I» будет идти самой первой, а не как надо. Насчёт % — тут зависит от базы.

  9. №2382
    Злодеяка
    Злодеяка 07 марта 2010 г., 10:49:07

    Коротко и ясно! Спасибо большое!

  10. №4635
    vasex
    vasex 12 мая 2011 г., 16:50:20

    Действительно, на сколько будет быстрее работать "general", чем "unicode". Делаю новый сайт на "joomla" и встал вопрос: "В чем разница между этими кодировками?"

  11. №10742
    Святослав
    Святослав 06 нояб. 2016 г., 20:03:04

    По поводу utf8mb4_unicode_ci. В RBAC миграции Yii2 зашито utf8_unicode_ci. Перевожу просто проект, обратил внимание.

  12. №10743
    Sam
    Sam 09 нояб. 2016 г., 2:04:32

    Именно в них полный набор юникода, скорее всего, не понадобится.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.