Unicode
В текстовых материалах используется значительно больше знаков, чем в стандартном
печатном ASCII, который базируется на английском языке. Некоторые европейские языки
имеют дополнительные буквы или используют диакритические знаки. Даже старинный
английский требует дополнительных знаков. Греческий и русский языки имеют различные
алфавиты. Японский, китайский и корейский используют не буквы, а иероглифы Han, которые
обозначают целые слова. На самом деле, знаков ASCII не всегда достаточно даже для
современного английского. Некоторые дисциплины (математика, музыка, химия) используют
жестко формализованные нотации, которые требуют большого количества знаков. Полнота и
понятность текстов зачастую зависит от точного использования принятой нотации.
Продукция компьютерной индустрии продается по всему миру, и производители
вынуждены признавать необходимость поддержки национальных алфавитов и иных знаков. В
этой области лидирует Microsoft. Поскольку все алфавиты невозможно представить с помощью
256 знаков 8-битного кода, были предприняты попытки представлять больший набор знаков с
помощью большего числа бит. Недавно один такой подход был принят за стандарт, который
обязались соблюдать большинство производителей компьютеров и программного обеспечения.
Он называется Unicode.
Первоначально в Unicode каждый знак представляется 16 битами, что достаточно для 65,536
знаков. Тем не менее, несмотря на огромные усилия целого ряда признанных специалистов,
комбинации знаков, используемые в некоторых языках, не могут быть представлены с
помощью Unicode.
Врезка 9.2
Наборы знаков (scripts), представленные в Unicode
Версия 2.0 стандартного Unicode содержит 16-битные коды 38,885 отдельных знаков.
Кодировка организована не по языкам, а по скриптам (scripts). Если несколько языков
используют близкие наборы знаков, набор символов, достаточный для этой группы
идентифицируется как один набор. К примеру, латинский набор содержит все знаки,
используемые в английском, французском, испанском, немецком и близких языках. Unicode 2.0
также поддерживает арабский, армянский, бенгали, кириллицу, грузинский, греческий,
Bopomofo, Devanagari, Gujarati, Gurmkhi, Han, Hangul, Hebrew, Hiragana, Kannada, Katakana,
Lao, Malayalam, Oriya, Phonetic, Tamil, Telugu, Thai и Tibetan наборы. Дополнительно к этим
исходным наборам есть группа коллекций символов, включая цифры, диакритические знаки,
знаки пунктуации, общие символы, математические , технические символы, стрелки, элементы
псевдографики и др. В скором времени появится поддержка некоторых современных языков
(например, Ethiopic, Sinhala), а в будущем возможна поддержка древних алфавитов (например,
Aramaic, Etruscan, runes).
Особенно важным аспектом Unicode является поддержка иероглифов Han, которые
используются в китайском, японском и корейском языках. Unicode совместим с Unihan,
который был создан в результате выполнения более раннего проекта и использовался для
представления знаков этих языков.
Успех Unicode определяется не просто усилиями ученых-лингвистов. Разработчики
тщательно изучили совместимость Unicode с существующим программным обеспечением.
Если бы пришлось вносить изменения во все программы, Unicode никогда не был бы принят.
Существует специальное представление знаков Unicode, называемое UTF-8, которое делает
возможной постепенную трансформацию приложений, базирующихся на ASCII для
использования всего набора скриптов Unicode.
UTF-8 - это кодировка, которая использует от одного до шести байт для представления
каждого знака Unicode. Наиболее широко используемые знаки представлены одним байтом,