10.10.1. Наборы символов Unicode
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
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Стратегии использования символов Unicode
Стратегии использования символов Unicode Приступая к работе над проектом в Windows, либо для разработки нового программного кода, либо для переноса существующего, программист, в зависимости от требований проекта, может выбрать одну из четырех стратегий.1. Только 8-битовые
Пример: преобразование символов из ASCII в Unicode
Пример: преобразование символов из ASCII в Unicode Программа 2.4 достраивает программу 1.3, в которой использовалась вспомогательная функция CopyFile. С копированием файлов вы уже знакомы, поэтому в данном примере эта операция дополняется преобразованием файла к кодировке Unicode в
Преобразование символов из кодировки ASCII в Unicode
Преобразование символов из кодировки ASCII в Unicode Измерения выполнялись для восьми программ, каждая из которых преобразовывала файл размером 12,8 Мбайт в файл размером 25,6 Мбайт. Соответствующие результаты представлены в табл. В.2.1. Программа atou (программа 2.4) сопоставима с
10.1. Наборы символов и объединения вообще
10.1. Наборы символов и объединения вообще Набор символов представляет собой множество символов и их кодов. Объединение задает набор правил для сравнения символов в наборе символов. Давайте сделаем различие явным с помощью примера.Предположите, что мы имеем алфавит с
10.10.2. Западноевропейские наборы символов
10.10.2. Западноевропейские наборы символов Западноевропейские наборы символов покрывают большинство западноевропейских языков, типа French, Spanish, Catalan, Basque, Portuguese, Italian, Albanian, Dutch, German, Danish, Swedish, Norwegian, Finnish, Faroese, Icelandic, Irish, Scottish и English.Объединения ascii (US ASCII):ascii_bin ascii_general_ci (значение по
10.10.3. Центральноевропейские наборы символов
10.10.3. Центральноевропейские наборы символов MySQL обеспечивает поддержку для наборов символов, используемых в Czech Republic, Slovakia, Hungary, Romania, Slovenia, Croatia и Poland.Объединения cp1250 (Windows Central European):cp1250_bin cp1250_croatian_ci cp1250_czech_cs cp1250_general_ci (значение по умолчанию) cp1250_polish_ciОбъединения cp852 (DOS Central
10.10.4. Южноевропейские и ближневосточные наборы символов
10.10.4. Южноевропейские и ближневосточные наборы символов Южныоевропейские и ближневосточные наборы символов, обеспечиваемые MySQL, включают Armenian, Arabic, Georgian, Greek, Hebrew и Turkish.Объединения armscii8 (ARMSCII-8 Armenian):armscii8_bin armscii8_general_ci (значение по умолчанию)Объединения cp1256 (Windows Arabic):cp1256_bin
10.10.5. Балтийские наборы символов
10.10.5. Балтийские наборы символов Балтийские наборы символов охватывают Estonian, Latvian и Lithuanian.Объединения cp1257 (Windows Baltic):cp1257_bin cp1257_general_ci (значение по умолчанию) cp1257_lithuanian_ciОбъединения latin7 (ISO 8859-13 Baltic):latin7_bin latin7_estonian_cs latin7_general_ci (значение по умолчанию)
10.10.6. Наборы символов кириллицы
10.10.6. Наборы символов кириллицы Наборы символов и объединения кириллицы для использования с Belarusian, Bulgarian, Russian и Ukrainian.Объединения cp1251 (Windows Cyrillic):cp1251_bin cp1251_bulgarian_ci cp1251_general_ci (значение по умолчанию) cp1251_general_cs cp1251_ukrainian_ciОбъединения cp866 (DOS Russian): cp866_bin cp866_general_ci (значение по
10.10.7. Азиатские наборы символов
10.10.7. Азиатские наборы символов Азиатские наборы символов, которые поддерживает пакет, включают Chinese, Japanese, Korean и Thai. Они могут быть усложнены. Например, китайские наборы должны учесть тысячи различных символов.Объединения big5 (Big5 Traditional Chinese):big5_bin big5_chinese_ci (значение по
Специальные наборы символов
Специальные наборы символов Основное правило для наборов символов то, что каждый байт (пара или тройка байтов в случае многобайтовых наборов) специально определен по стандарту его реализации. Существует четыре особых исключения - NONE, OCTETS, ASCII и UNICODE FSS. В табл. 11.1 показаны