perluniintro - Юникод в Perl: введение
Документ дает общее представление о кодировке Юникод(анг. Unicode) и о том, как Юникод используется в Perl.
Unicode
Юникод представляет собой стандарт кодирования символов, который планирует систематезировать почти все письменности мира, плюс множество других символов.
Юникод и ISO/IEC 10646 согласовали стандарты, которые представляют коды для символов большинства современных стандартов кодирования, охватывающих более чем 30 письменностей и сотни языков, включая все коммерчески-важные современные языки. Все символы крупнейших китайских, японских и корейских словарей так же кодируются. В конечном счете будут стандартизированы практически все символы в более чем 250 письменностей и тысяч языков. Юникод 1.0 был выпущен в октябре 1991, в настоящий момент последняя версия 5.2.
Символ Юникода - абстрактное понятие. Он не привязан к какой-либо постоянной величине числа. Юникод нейтрален к языку и его отображению: он не кодирует язык текста, не определяет шрифты и другие детали графического отображения. Юникод оперирует над символами и над построением текста из этих символов.
Юникод определяет символы, такие как LATIN CAPITAL LETTER A
или
GREEK SMALL LETTER ALPHA
и их уникальные числа, например
вышеприведенным символам соответствуют их числовые представления
0x0041
и 0x03b1
. Эти уникальные числа назваются -
коды символов.
Стандарт Юникода предпочитает использование шестнадцатеричного представления
кодов. Если такие номера как 0x0041
вам не знакомы, загляните в
раздел, Шестнадцатеричное представление.
В стандарте Юникода используется обозначение такое как
U+0041 LATIN CAPITAL LETTER A
, чтобы указать шестнадцатеричный код
и нормативное имя символа.
Юникод также определяет различные свойства для символов, такие как "прописной" или "строчный", "десятичное число", или "знак препинания". Эти свойства независимы от имен символов. Кроме того, определены различные операции над символами такие как "Возведение в верхний регистр" или "Возведение в нижний регистр", и упорядочивание(сортировка) (анг. collating).
Логический "символ" Юникода может на самом деле состоять из более чем одного
внутренннего фактического "символа" или кода. Для западных языков
символы Юникода корректно моделируются на основе
базовых символов (например, LATIN CAPITAL LETTER A
) c
дополнительными модификаторами (например, COMBINING ACUTE
ACCENT
). Такая последовательность
базовых символов и модификаторов называется последовательностью
комбинированных символов(combining character sequence).
Некоторые не западные языки требуют более сложных моделей, поэтому Юникод
создал концепцию - кластеры графем (анг. grapheme cluster) и затем
рассширенные кластеры графем. К примеру,
слог корейской письменности Хангыль
считается одним логическим символом, но чаще всего состоит
из трех символов Юникода: после ведущего согласного следует
внутренний гласный после которого в свою очередь следует конечный
согласный.
Будем называть эти расширенные кластеры графем "символами", относительно их внешнего представления. Как программист, вы будете стремиться оперировать отдельными элементами (или символами) кластера, хотя с точки зрения пользователя кластер графем будет восприниматься как один символ.
В этом документе мы будем подразумевать под словом "символ" - символ Юникода.
Для некоторых сочетаний есть их монолитные (precomposed) варианты.
Например, LATIN CAPITAL LETTER A WITH ACUTE
определяется как
один код. Однако, монолитные варианты символов
имеются только для некоторых сочетаний, и в основном предназначены
для поддержки прямой и обратной совместимости между
Юникодом и традиционными стандартами(например, ISO 8859). В общем
случае, составной метод (composing method) более расширяем.
Для поддержки преобразования
между различными составными символами определены формы нормализации
для приведения текста к определенному стандарту.
Юникод определяет несколько форм кодировок символов (character encoding forms), из которых UTF-8 наиболее популярна. UTF-8 - кодировка переменной ширины, в которой символы кодируются от 1 до 6 байтов. Кроме UTF-8 развиваются стандарты кодировок UTF-16 и UTF-32. ISO/IEC 10646 определяет аналогичные формы кодирования UCS-2 (аналогичен UTF-16) и UCS-4 (аналогичен UTF-32).
Подробнее о кодировках см. в документе perlunicode.
Продолжение следует ...