ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.01.2021

Просмотров: 162

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


2.7.9. Коды символов


У каждого компьютера есть набор символов, который он использует. Как мини­мум этот набор включает 26 заглавных и 26 строчных букв, цифры от 0 до 9, а также некоторые специальные символы: пробел, точка, запятая, минус, символ возврата каретки и т. д.

Для того чтобы передавать эти символы в компьютер, каждому из них приписывается номер. Отображение символов в целые числа называется кодировкой символов. Связанные между собой компьютеры должны понимать общий код, иначе они не смогут обмени­ваться информацией. По этой причине были разработаны стандарты. Мы кратко рассмотрим два самых важных из них.


2.7.9.1. ASCII


Одна из наиболее распространенных кодировок называется ASCII (American Standard Code for Information Interchange - американский стандартный код для обмена инфор­мацией). Каждый символ ASCII содержит 7 битов, таким образом, всего мо­жет быть 128 символов. Коды от 0 до 1F (в шестнадцатеричной системе счисления) соответствуют непечатным управляющим символам.

Многие непечатные символы ASCII предназначены для управления передачей данных. На­пример, послание может состоять из символа начала заголовка SOH (Start of Header), самого заголовка, символа начала текста STX (Start of Text), самого тек­ста, символа конца текста ЕТХ (End of Text) и, наконец, символа конца передачи EOT (End of Transmission). Однако на практике послания, отправляемые по теле­фонным линиям и сетям, форматируются по-другому, так что непечатные симво­лы передачи ASCII практически не используются.

Печатные символы ASCII наглядны. Они включают буквы верхнего и нижнего регистров, цифры, знаки пунктуации и некоторые математические символы.


2.7.9.2. UNICODE

Компьютерная промышленность развивалась преимущественно в США, что при­вело к появлению кода ASCII. Этот код подходит для английского языка, но не очень удобен для других языков. Во французском языке есть надстрочные знаки, в немецком - умляуты и т. д. В некоторых европейских языках есть несколько букв, которых нет в ASCII. Некоторые языки имеют совершенно другой алфавит (например, русский или арабский), а у некоторых вообще нет алфавита (например, китай­ский). Компьютеры распространились по всему миру, и поставщики программно­го обеспечения хотят реализовывать свою продукцию не только в англоязычных, но и в тех странах, где большинство пользователей не говорят по-английски и где нужен другой набор символов. Первой попыткой расширения ASCII был IS 646, который добавлял к ASCII еще 128 символов, в результате чего получился 8-битный код под названием Latin-1. Добавлены были в основном латинские буквы со штрихами и диакритическими знаками (надстрочные и подстрочные знаки, например, точки у ё). Следующей попыткой был код IS 8859, в котором было введено понятие кодовой страницы. Кодовая страница - набор из 256 символов для определенного языка или группы языков. IS 8859-1 - это Latin-1. IS 8859-2 включает славянские языки с латинским алфавитом (например, чешский, польский и венгерский). IS 8859-3 содержит символы турецкого, мальтийского, эсперанто и галисийского языков и т. д. Главным недостатком такого подхода является то, что программное обеспе­чение должно следить, с какой именно кодовой страницей оно имеет дело в дан­ный момент, и при этом нельзя смешивать языки. К тому же эта система не охватывает японский и китайский языки.


Группа компьютерных компаний разрешила эту проблему, создав новую систе­му под названием UNICODE, и объявила эту систему международным стандартом (IS 10646). UNICODE поддерживается некоторыми языками программирования (например, Java, C#), рядом операционных систем (например, Windows NT) и многими приложениями.

Основная идея UNICODE - приписывать каждому символу единственное постоянное 16-битное значение, которое называется указателем кода. Так как символы UNICODE состоят из 16 битов, всего получается 65 536 ко­довых указателей. Поскольку во всех языках мира в общей сложности около 200 000 символов, кодовые указатели являются ресурсом, который нужно распределять очень бережно. Около половины кодов уже распределено, и консорциум, разработавший UNICODE, постоянно рассматрива­ет предложения на распределение оставшейся части. Чтобы ускорить принятие UNICODE, консорциум использовал Latin-1 в качестве кодов от 0 до 255, легко преобразуя ASCII в UNICODE.

Вся совокупность кодов разделена на блоки, каждый блок содержит 16 кодов. Каждый алфавит в UNICODE имеет ряд последовательных зон. Приведем неко­торые примеры (в скобках указано число задействованных кодов): латынь (336), греческий (144), русский (256). Отметим, что каждому из этих языков приписано больше кодов, чем в нем есть букв. Это было сделано отчас­ти потому, что во многих языках у каждой буквы есть несколько вариантов. Напри­мер, каждая буква в английском языке представлена в двух вариантах: там есть строч­ные и заглавные буквы. В некоторых языках буквы имеют три или более форм, выбор которых зависит от того, где находится буква: в начале, конце или середине слова.

Кроме того, некоторые коды были приписаны диакритическим знакам (112), знакам пунктуации (112), знакам ва­лют (48), математическим символам (256), геометрическим фигурам (96) и ри­сункам (192). Чтобы пользователи могли создавать новые символы для особых целей, суще­ствует еще 6400 кодов.

UNICODE разрешил многие, но не все проблемы интернационализа­ции. Например, латинский алфавит упорядочен, а иероглифы - нет, поэтому программа для английского языка может расположить слова “cat” и “dog” по алфавиту, сравнив значение кодов пер­вых букв, а программе для японского языка нужны дополнительные таблицы, что­бы можно было вычислять, в каком порядке расположены символы в словаре. Еще одна проблема состоит в регулярном появлении новых слов. Если в английском языке для них новые коды не нужны, то в японском нужны. Представители различ­ных профессиональных кругов также заинтересованы в наличии каких-либо особых символов. Консорциум по созданию UNICODE рассматривает новые предло­жения и выносит по ним решения.



Смотрите также файлы