UTF-8:Общая информация? мусорное ведро? Unicode?

Я пытаюсь выяснить, какое сопоставление я должен использовать для различных типов данных. 100% содержания, которое я буду хранить, отправлены пользователями.

Мое понимание - то, что я должен использовать Общий CI UTF-8 (Нечувствительный к регистру) вместо Двоичного файла UTF-8. Однако я не могу найти ясное различием между Общим CI UTF-8 и Unicode UTF-8 CI.

  1. Я должен хранить отправленное пользователями содержание в столбцах UTF-8 General или UTF-8 Unicode CI?
  2. К каким данным Двоичный файл UTF-8 был бы применим?
271
задан hjpotter92 16 April 2014 в 02:09
поделиться

1 ответ

В целом, utf8_general_ci быстрее, чем utf8_unicode_ci, но менее корректен.

Вот в чем разница:

Для любого набора символов Unicode операции, выполняемые с использованием коллизии _general_ci, быстрее, чем операции с использованием коллизии _unicode_ci. Например, сравнение для коллизии utf8_general_ci выполняется быстрее, но немного менее корректно, чем сравнение для utf8_unicode_ci. Причина этого в том, что utf8_unicode_ci поддерживает сопоставления типа расширения; то есть, когда один символ сравнивается как равный с комбинациями других символов. Например, в немецком и некоторых других языках "ß" равен "ss". utf8_unicode_ci также поддерживает сокращения и игнорируемые символы. utf8_general_ci - это унаследованная коллизия, которая не поддерживает расширения, сокращения и игнорируемые символы. Она может выполнять только однократное сравнение между символами.

Цитируется по: http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html

Для более подробного объяснения, пожалуйста, прочитайте следующее сообщение с форумов MySQL: http://forums.mysql.com/read.php?103,187048,188748

As for utf8_bin: utf8_general_ci и utf8_unicode_ci выполняют сравнение без учета регистра. В отличие от них, utf8_bin чувствителен к регистру (среди прочих отличий), поскольку сравнивает двоичные значения символов.

293
ответ дан 23 November 2019 в 02:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: