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

редактировать
Вывод программы ascii в Cygwin

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

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

Содержание

  • 1 История
  • 2 Собственные расширения
  • 3 ISO 8859 и проприетарные адаптации
  • 4 Неправильный набор символов
  • 5 Многобайтовые кодировки символов
  • 6 Использование в машиночитаемых языках
  • 7 См. Также
  • 8 Ссылки
  • 9 Внешние ссылки

История

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

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

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

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

Когда компьютеры и периферийные устройства были стандартизированы на восьмибитные байты в 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 г.).

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

IBM представила восьмибитовые расширенные коды 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 (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 System, и в большинстве стандартов Internet она использовалась до Unicode.

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

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

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

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

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

Многобайтовые кодировки символов

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

UTF-8 является истинным расширенным ASCII, как и некоторые кодировки Extended Unix Code.

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 только для свободного текста, а не для тегов, ключевых слов или других функций, которые имеют особое значение для интерпретирующего программного обеспечения.

См. также

Ссылки

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

Последняя правка сделана 2021-05-19 10:08:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте