10.10.1. Наборы символов Unicode

We use cookies. Read the Privacy and Cookie Policy

10.10.1. Наборы символов Unicode

MySQL имеет два набора символов Unicode. Вы можете сохранять текст приблизительно для 650 языков, используя эти наборы символов.

Объединения ucs2 (UCS-2 Unicode):

ucs2_bin

ucs2_czech_ci

ucs2_danish_ci

ucs2_esperanto_ci

ucs2_estonian_ci

ucs2_general_ci (default)

ucs2_hungarian_ci

ucs2_icelandic_ci

ucs2_latvian_ci

ucs2_lithuanian_ci

ucs2_persian_ci

ucs2_polish_ci

ucs2_roman_ci

ucs2_romanian_ci

ucs2_slovak_ci

ucs2_slovenian_ci

ucs2_spanish2_ci

ucs2_spanish_ci

ucs2_swedish_ci

ucs2_turkish_ci

ucs2_unicode_ci

Объединения utf8 (UTF-8 Unicode):

utf8_bin

utf8_czech_ci

utf8_danish_ci

utf8_esperanto_ci

utf8_estonian_ci

utf8_general_ci (default)

utf8_hungarian_ci

utf8_icelandic_ci

utf8_latvian_ci

utf8_lithuanian_ci

utf8_persian_ci

utf8_polish_ci

utf8_roman_ci

utf8_romanian_ci

utf8_slovak_ci

utf8_slovenian_ci

utf8_spanish2_ci

utf8_spanish_ci

utf8_swedish_ci

utf8_turkish_ci

utf8_unicode_ci

Обратите внимание, что в объединениях ucs2_roman_ci и utf8_roman_ci I и J считаются эквивалентными, равно как и пара U и V.

Объединения ucs2_hungarian_ci и utf8_hungarian_ci были добавлены в MySQL 5.1.5.

MySQL осуществляет объединение utf8_unicode_ci согласно Unicode Collation Algorithm (UCA), описанному на http://www.unicode.org/reports/tr10/. Объединение использует version-4.0.0 UCA weight keys: http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt. Следующее обсуждение использует utf8_unicode_ci, но это также верно и для ucs2_unicode_ci.

В настоящее время объединение utf8_unicode_ci имеет только частичную поддержку для Unicode Collation Algorithm. Некоторые символы все же не обеспечиваются. Также полностью не обеспечивается объединение меток. Это воздействует прежде всего на вьетнамский и некоторые малораспространенные языки в России, типа Udmurt, Tatar, Bashkir и Mari.

Старшее свойство в utf8_unicode_ci: это поддерживает расширения, то есть когда один символ сравнивается как равный комбинациям других символов. Например, в немецком и некоторых других языках ?Я равен ss.

utf8_general_ci объединение, которое не поддерживает расширения. Это может делать только взаимно-однозначные сравнения между символами. Это означает, что сравнения для объединения utf8_general_ci быстрее, но немного менее правильные, чем сравнения для utf8_unicode_ci.

Например, следующие равенства верны в utf8_general_ci и в utf8_unicode_ci:

?Д = A

?Ц = O

?Ь = U

Различие между объединениями: это является истинным для utf8_general_ci:

?Я = s

В то время, как это истинно для utf8_unicode_ci:

?Я = ss

MySQL осуществляет специфические для языка объединения для набора символов utf8 только, если упорядочение с utf8_unicode_ci не работает хорошо для языка. Например, utf8_unicode_ci работает прекрасно для German и French, а значит нет никакой потребности создавать специальные объединения utf8 для этих двух языков.

utf8_general_ci также удовлетворителен для German и French за исключением того, что ?Я равно s, но ss. Если это приемлемо для вашей прикладной программы, то применяйте utf8_general_ci, потому что это быстрее. Иначе, используйте utf8_unicode_ci, потому что это более точно.

utf8_swedish_ci, подобно другим специфическим для языка объединениям utf8, получен из utf8_unicode_ci с дополнительными правилами языка. Например, в Swedish следующие связи хранения, которые неприменимы для German или French:

?Ь = Y < ?Ц

Объединения utf8_spanish_ci и utf8_spanish2_ci соответствуют современному и традиционному испанскому, соответственно. В обоих объединениях ?? (n-tilde) отдельный символ между n и o. Кроме того, для традиионного испанского ch отдельный символ между c и d, а ll отдельный символ между l и m