Онлайн библиотека PLAM.RU


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









Главная | Контакты | Нашёл ошибку | Прислать материал | Добавить в избранное

Все материалы представлены для ознакомления и принадлежат их авторам.