stringtranslate.com

Расширенный ASCII

Вывод программы ascii в Cygwin

Расширенный ASCII — это набор кодировок символов , включающий (большую часть) исходный набор символов ASCII из 96 плюс до 128 дополнительных символов. Не существует формального определения «расширенного ASCII», и даже использование этого термина иногда подвергается критике, [1] [2] [3] , поскольку его можно ошибочно истолковать как означающее, что Американский национальный институт стандартов (ANSI) обновил свой стандарт. Стандарт ANSI X3.4-1986 включает больше символов или что этот термин идентифицирует одну однозначную кодировку, но ни то, ни другое не соответствует действительности.

Стандарт ISO ISO 8859 был первым международным стандартом, формализовавшим (ограниченное) расширение набора символов ASCII: из многих языковых вариантов, которые он закодировал, ISO 8859-1 («ISO Latin 1»), который поддерживает большинство западноевропейских языков. наиболее известен на Западе. Существует множество других расширенных кодировок ASCII (более 220 кодовых страниц DOS и Windows ). EBCDIC («другой» код основного символа) также за десятилетия разработал множество расширенных вариантов (более 186 кодовых страниц EBCDIC).

Все современные операционные системы используют Юникод , который поддерживает тысячи символов. Однако расширенный ASCII остается важным в истории вычислений , а поддержка нескольких расширенных наборов символов ASCII требовала написания программного обеспечения таким образом, чтобы в дальнейшем было намного проще поддерживать метод кодирования UTF-8 .

История

ASCII был разработан в 1960-х годах для телетайпов и телеграфии , а также некоторых вычислений. Ранние телетайпы были электромеханическими, не имели микропроцессора и имели достаточно электромеханической памяти для работы. Они полностью обрабатывали один символ за раз, сразу после этого возвращаясь в состояние ожидания; это означало, что любые управляющие последовательности должны были иметь длину всего один символ, и, следовательно, для таких элементов управления необходимо было зарезервировать большое количество кодов. Это были ударные принтеры на базе пишущих машинок , которые могли печатать только фиксированный набор глифов, которые были отлиты в металлический элемент или элементы; это также способствовало использованию минимального набора символов.

Семибитный код ASCII улучшен по сравнению с предыдущими пяти- и шестибитными кодами. Из 27 = 128 кодов 33 использовались для элементов управления и 95 тщательно отобранных печатных символов (94 глифа и один пробел), включающих английский алфавит (прописные и строчные), цифры и 31 знак препинания и символ: все символы стандартной пишущей машинки США, а также несколько символов, выбранных для задач программирования. Некоторые популярные периферийные устройства реализовали только подмножество из 64 печатных символов: Teletype Model 33 не мог передавать буквы от «a» до «z» или пять менее распространенных символов («`», «{», «|», «}» и «~»). и когда они получили такие символы, они вместо этого напечатали от «A» до «Z» ( все заглавные буквы ) и пять других в основном похожих символов («@», «[», «\", «]» и «^»). .

Набор символов ASCII едва ли достаточно велик для использования в английском языке в США, в нем отсутствуют многие глифы, распространенные при наборе текста , и он слишком мал для универсального использования. Желательны, полезны или необходимы гораздо больше букв и символов для непосредственного представления букв алфавитов, отличных от английского, больше видов пунктуации и пробелов, больше математических операторов и символов (× ÷ ⋅ ≠ ≥ ≈ π и т. д.), используются некоторые уникальные символы. некоторыми языками программирования, идеограммами , логограммами , символами для рисования прямоугольников и т. д.

Самой большой проблемой для пользователей компьютеров во всем мире были другие алфавиты. Английский алфавит ASCII почти соответствует европейским языкам, если буквы с диакритическими знаками заменяются буквами без акцентов или двухсимвольными приближениями, такими как ss вместо ß . Модифицированные варианты 7-битного ASCII появились незамедлительно, заменяя некоторые менее используемые символы весьма востребованными символами или буквами, например, замена «#» на «£» на британских телетайпах, «\» на «¥» в Японии или «₩» в Корее и т. д. В результате получилось не менее 29 вариантов комплектов. 12 кодовых точек были модифицированы хотя бы одним модифицированным набором, в результате чего осталось только 82 «инвариантных» кода . Однако языки программирования придали значение многим замененным символам, были разработаны обходные пути, такие как трехсимвольные последовательности C «??<» и «??>» для обозначения «{» и «}». [4] Языки с разными базовыми алфавитами могут использовать транслитерацию, например, заменять все латинские буквы наиболее близкими кириллическими буквами (в результате получается странный, но несколько читаемый текст, когда английский печатается кириллицей или наоборот). Также были разработаны схемы, позволяющие напечатать две буквы (часто с пробелом между ними), чтобы получить буквы с акцентом. Пользователям не нравились ни один из этих компромиссов, и они часто плохо поддерживались. [ нужна цитата ]

Когда в 1970-х годах компьютеры и периферийные устройства стали стандартизировать восьмибитные байты , стало очевидно, что компьютеры и программное обеспечение могут обрабатывать текст, использующий наборы из 256 символов, практически без дополнительных затрат на программирование и дополнительных затрат на хранение. (Предполагая, что неиспользуемый 8-й бит каждого байта не использовался повторно каким-либо образом, например, при проверке ошибок, логических полях или упаковке 8 символов в 7 байтов.) Это позволило бы использовать ASCII без изменений и предоставить еще 128 символов. Многие производители разработали 8-битные наборы символов, состоящие из ASCII плюс до 128 неиспользуемых кодов: кодировки, охватывающие все наиболее часто используемые западноевропейские (и латиноамериканские) языки, такие как датский, голландский, французский, немецкий, португальский, испанский, Шведский и многое другое можно сделать.

128 дополнительных символов по-прежнему недостаточно для покрытия всех целей, всех языков или даже всех европейских языков, поэтому появление множества собственных и национальных 8-битных наборов символов на основе ASCII было неизбежным. Перевод между этими наборами ( транскодирование ) сложен (особенно, если символ отсутствует в обоих наборах); и часто не выполнялось, создавая моджибаке (получитаемый результирующий текст, часто пользователи учились декодировать его вручную). В конечном итоге в конце 1990-х годов были попытки сотрудничества или координации со стороны национальных и международных органов по стандартизации, но наборы, принадлежащие производителям, оставались самыми популярными, прежде всего потому, что международные стандарты исключали символы, популярные в определенных культурах или характерные для них.

Собственные расширения

Различные собственные модификации и расширения ASCII появились на мейнфреймах и миникомпьютерах , не поддерживающих EBCDIC , особенно в университетах.

Hewlett-Packard начала добавлять европейские символы в свой расширенный 7-битный/8-битный набор символов ASCII HP Roman Extension примерно в 1978/1979 году для использования на своих рабочих станциях, терминалах и принтерах. Позже это превратилось в широко используемые обычные 8-битные наборы символов HP Roman-8 и HP Roman-9 (а также ряд их вариантов).

Домашние компьютеры Atari и Commodore добавили к своему нестандартному ASCII множество графических символов (соответственно ATASCII и PETSCII , основанные на исходном стандарте ASCII 1963 года).

В набор символов TRS-80 для домашнего компьютера TRS-80 добавлено 64 полуграфических символа (от 0x80 до 0xBF), которые реализовывали блочную графику с низким разрешением. (Каждый блочный графический символ отображается в виде сетки пикселей 2x3, причем каждый пиксель блока эффективно контролируется одним из младших 6 бит.) [5]

IBM представила восьмибитные расширенные коды ASCII на оригинальном IBM PC , а затем выпустила вариации для разных языков и культур. IBM назвала такие наборы символов кодовыми страницами и присвоила номера как тем, которые они сами изобрели, так и многим из них, изобретенным и используемым другими производителями. Соответственно, наборы символов очень часто обозначаются номером кодовой страницы IBM. В кодовых страницах, совместимых с ASCII, нижние 128 символов сохраняют свои стандартные значения US-ASCII, а в верхних 128 символах могут быть доступны различные страницы (или наборы символов). Например, компьютеры DOS , созданные для рынка Северной Америки, использовали кодовую страницу 437 , которая включала символы с диакритическими знаками, необходимые для французского, немецкого и некоторых других европейских языков, а также некоторые графические символы для рисования линий. Больший набор символов позволял создавать документы на комбинации таких языков, как английский и французский (хотя французские компьютеры обычно используют кодовую страницу 850 ), но не, например, на английском и греческом языках (для которых требовалась кодовая страница 737 ).

Apple Computer представила в Mac OS свои собственные восьмибитные расширенные коды ASCII , такие как Mac OS Roman . Apple LaserWriter также представил набор символов Postscript .

Digital Equipment Corporation (DEC) разработала многонациональный набор символов , в котором было меньше символов, но больше буквенных и диакритических комбинаций. Он поддерживался компьютерными терминалами DEC VT220 и более поздними версиями . Позже это стало основой для других наборов символов, таких как Международный набор символов Lotus (LICS), ECMA-94 и ISO 8859-1 .

ИСО 8859

В 1987 году Международная организация по стандартизации (ISO) опубликовала набор стандартов для восьмибитных расширений ASCII, ISO 8859. Самым популярным из них был ISO 8859-1 (также называемый «ISO Latin 1»), который содержит символы, достаточные для наиболее распространенные западноевропейские языки. Другие стандарты группы 8859 включали ISO 8859-2 для восточноевропейских языков, использующих латиницу , ISO 8859-5 для языков, использующих кириллицу , и другие.

Одним из примечательных отличий стандартов ISO от некоторых расширенных ASCII, специфичных для конкретного поставщика, является то, что 32 позиции символов от 80 16 до 9F 16 , которые соответствуют управляющим символам ASCII с «установленным» старшим битом, зарезервированы ISO для контролируют использование и не используются для печатных символов (они также зарезервированы в Юникоде [6] ). Это соглашение почти повсеместно игнорировалось другими расширенными наборами ASCII.

Windows-1252

Microsoft намеревалась использовать стандарты ISO 8859 в Windows, но вскоре заменила неиспользуемые управляющие символы C1 дополнительными символами, создав собственный набор символов Windows-1252, который иногда ошибочно маркируют как ANSI . Добавленные символы включали «фигурные» кавычки и другие типографские элементы, такие как длинное тире , знак евро и буквы, отсутствующие во французском и финском языках. Он стал наиболее часто используемым расширенным ASCII в мире и часто используется в Интернете, даже если указан 8859-1. [7] [8]

Путаница в наборе символов

Значение каждой расширенной кодовой точки может быть разным в каждой кодировке. Чтобы правильно интерпретировать и отображать текстовые данные (последовательности символов), включающие расширенные коды, аппаратное и программное обеспечение, которое считывает или получает текст, должно использовать конкретную расширенную кодировку ASCII, которая к нему применяется. Применение неправильной кодировки приводит к нерациональной замене многих или всех расширенных символов в тексте.

Программное обеспечение может использовать фиксированный выбор кодировки или выбирать из палитры кодировок по умолчанию, проверять нацию и языковые настройки компьютера, читать объявление в тексте, анализировать текст , запрашивать у пользователя, разрешать пользователю выбирать или переопределять, и/или по умолчанию используется последний выбор. Когда текст передается между компьютерами, использующими разные операционные системы, программное обеспечение и кодировки, применение неправильной кодировки может быть обычным явлением.

Поскольку полный английский алфавит и наиболее часто используемые символы английского языка включены в семибитные кодовые точки ASCII, которые являются общими для всех кодировок (даже для большинства проприетарных кодировок), англоязычный текст менее повреждается при его интерпретации с помощью неправильная кодировка, но текст на других языках может отображаться как моджибаке (полная чушь). Поскольку во многих интернет-стандартах используется ISO 8859-1, а Microsoft Windows (с использованием надмножества кодовой страницы 1252 ISO 8859-1) сегодня является доминирующей операционной системой для персональных компьютеров, [ нужна ссылка ] [ когда? ] необъявленное использование ISO 8859-1 является вполне обычным явлением, и его обычно можно предполагать, если нет указаний на иное.

Многие протоколы связи , особенно SMTP и HTTP , требуют, чтобы кодировка содержимого была помечена идентификаторами набора символов, присвоенными IANA .

Смотрите также

Рекомендации

  1. Бенджамин Рифеншталь (26 февраля 2001 г.). «Re: Информация Cygwin Termcap, включающая расширенные символы ASCII». cygwin (список рассылки). Архивировано из оригинала 11 июля 2013 года . Проверено 2 декабря 2012 г.
  2. С. Волицкий (23 марта 2012 г.). «Печать расширенных кодов ASCII в sql*plus» . Проверено 17 мая 2022 г.
  3. Марк Дж. Рид (28 марта 2004 г.). «vim: как набрать расширенный ascii?». Группа новостей : comp.editors . Проверено 17 мая 2022 г.
  4. ^ «2.2.1.1 Триграфические последовательности» . Обоснование американского национального стандарта для информационных систем — Язык программирования — C. Архивировано из оригинала 29 сентября 2018 г. Проверено 8 февраля 2019 г.
  5. ^ Гольдкланг, Ира (2015). «Графические советы и рекомендации». Архивировано из оригинала 29 июля 2017 г. Проверено 29 июля 2017 г.
  6. ^ «Элементы управления C1 и дополнение Latin-1 | Диапазон: 0080–00FF» (PDF) . Стандарт Юникод, версия 15.1 . Консорциум Юникод .
  7. ^ «Наборы символов HTML» . Школы W3 . Когда браузер обнаруживает ISO-8859-1, он обычно использует по умолчанию Windows-1252, поскольку в Windows-1252 имеется еще 32 международных символа.
  8. ^ «Кодировка». ЧТОРГ . 27 января 2015 г. сек. 5.2 Имена и метки. Архивировано из оригинала 4 февраля 2015 года . Проверено 4 февраля 2015 г.

Внешние ссылки