Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Вывод программы ascii в Cygwin

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

Существует множество расширенных кодировок ASCII (более 220 кодовых страниц DOS и Windows). EBCDIC («другой» основной 8-битный символьный код) за десятилетия также разработал множество расширенных вариантов (более 186 кодовых страниц EBCDIC).

История [ править ]

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

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

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

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

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

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 года).

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

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

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

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

ISO 8859 и его собственные адаптации [ править ]

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

Одним из примечательных отличий наборов символов ISO от кодовых страниц является то, что позиции символов со 128 по 159, соответствующие управляющим символам ASCII с набором старших битов, специально не используются и не определены в стандартах ISO, хотя они часто использовались. для печатаемых символов в проприетарных кодовых страницах, нарушение почти универсальных стандартов ISO.

Позднее Microsoft создала кодовую страницу 1252 , совместимую надмножество ISO 8859-1 с дополнительными символами в неиспользуемом диапазоне ISO. Кодовая страница 1252 - это стандартная кодировка символов западноевропейских языковых версий Microsoft Windows , включая английские версии. ISO 8859-1 - это обычная 8-битная кодировка символов, используемая системой X Window , и большинство стандартов Интернета использовали ее до Unicode .

Путаница в наборе символов [ править ]

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

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

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

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

Кодировки многобайтовых символов [ править ]

Некоторые многобайтовые кодировки символов (кодировки символов, которые могут обрабатывать более 256 различных символов) также являются истинным расширенным ASCII. Это означает, что все символы ASCII кодируются одним байтом с тем же значением, что и ASCII, и эти значения больше нигде не используются. Их можно использовать в форматах файлов, в которых для ключевых слов и синтаксиса формата файла используются только байты ASCII, а байты 0x80-0xFF могут использоваться для произвольного текста, включая большинство языков программирования, где ключевые слова языка, имена переменных и имена функций должны быть в ASCII, но строковые константы и комментарии могут использовать символы, отличные от ASCII. Это значительно упрощает введение многобайтового набора символов в существующие системы, использующие расширенный ASCII.

UTF-8 - это действительно расширенный ASCII, как и некоторые кодировки расширенного кода Unix .

ISO / IEC 6937 не является расширенным ASCII, потому что его кодовая точка 0x24 соответствует общему знаку валюты (¤), а не знаку доллара ($), но в противном случае, если вы считаете, что пары акцент + буква являются расширенным символом, за которым следует ASCII.

Shift JIS не является истинным расширенным ASCII. Кроме замены обратной косой черты с йены характером, многобайтовые символы могут также включать в себя ASCII байт. Он избегает использования разделителей и элементов управления ASCII, поэтому во многих случаях, таких как HTML, он может работать. UTF-16 является еще менее расширенным ASCII, потому что символы ASCII хранятся как два байта, один из которых равен 0x00. Перенос существующей системы для поддержки наборов символов как Shift JIS или UTF-16 сложен и подвержен ошибкам.

Использование на машиночитаемых языках [ править ]

Для языков программирования и языков документов, таких как C и HTML , важен принцип расширенного ASCII, поскольку он позволяет поддерживать множество различных кодировок и, следовательно, многие человеческие языки с небольшими дополнительными усилиями программирования в программном обеспечении, которое интерпретирует файлы машиночитаемых языков. .

Принцип расширенного ASCII означает, что:

  • все байты ASCII (от 0x00 до 0x7F) имеют одинаковое значение во всех вариантах расширенного ASCII,
  • байты, которые не являются байтами ASCII, используются только для свободного текста, а не для тегов, ключевых слов или других функций, которые имеют особое значение для интерпретирующего программного обеспечения.

См. Также [ править ]

  • ASCII
  • ASCII искусство
  • Диграфы и триграфы
  • Метод ввода
  • Список символов Юникода
  • UTF-8
  • КОИ-8

Ссылки [ править ]

  1. Бенджамин Рифеншталь (26 февраля 2001 г.). «Re: информация Cygwin Termcap, включающая расширенные символы ascii» . cygwin (список рассылки). Архивировано 11 июля 2013 года . Проверено 2 декабря 2012 года .
  2. ^ С. Wolicki (23 марта 2012). «Тема: печатать расширенные коды ASCII в sql * plus» . Архивировано 15 марта 2013 года . Проверено 2 декабря 2012 года .
  3. Марк Дж. Рид (28 марта 2004 г.). "vim: как набрать расширенный ascii?" . Группа новостейсост . Редакторы . Архивировано 2 августа 2013 года . Проверено 2 декабря 2012 года .
  4. ^ «2.2.1.1 Последовательности триграфа» . Обоснование Американского национального стандарта для информационных систем - язык программирования - C . Архивировано 29 сентября 2018 года . Проверено 8 февраля 2019 .
  5. ^ Goldklang, Ira (2015). «Графические советы и хитрости» . Архивировано 29 июля 2017 года . Проверено 29 июля 2017 .

Внешние ссылки [ править ]

  • Юникод Романа Чиборры и информационные страницы расширенного ASCII
  • Короткая страница по ASCII с 8-битной диаграммой OEM и 8-битной диаграммой ANSI