Ascii что это такое на ps3
Главным образом применяется в форматах PostScript и Portable Document Format компании Adobe.
ASCII-анимация
ASCII-анимация является одним из направлений ASCII-арта. В этом направлении рисуются наборы ASCII-картинок, при пролистывании которых получаются мультфильмы. Обычно высота картинки выбирается равной стандартной высоте программы просмотрщика текста, под которую он оптимизируется. При этом смена кадров производится нажатием клавиши Page Down.
Также на PC в среде DOS возможен вывод ASCII-анимации из BAT-файлов через драйвер ANSI.SYS с использованием Esc-последовательностей. Этот метод не получил широкого распространения из-за того, что он требует загрузки драйвера, который редко используется по назначению и занимает место в памяти.
Известны также анимационные ролики, реализованные посредством протокола telnet. Наиболее известным среди них является ASCII-версия IV эпизода космической саги «Звёздные войны» [3] [4] .
Представление ASCII в ЭВМ
На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.
ASCII-коды используются также для определения нажатой клавиши при программировании. Для стандартной QWERTY-клавиатуры таблица кодов выглядит следующим образом:
ASCII графика (от англ. ASCII artwork ) — форма изобразительного искусства, использующая символы ASCII на моноширинном экране компьютерного терминала (терминальный сервер) или принтера для представления изображений. При создании такого изображения используется палитра, состоящая из буквенных, цифровых символов и символов знаков пунктуации из числа 95 символов таблицы ASCII. По причине высокой вероятности различий в представлении на системах с национальными вариантами таблицы остальные 160 символов, как правило, не используются.
Совместимость
Единственная потенциальная проблема состоит в том, что Ascii85 может содержать символы, которые обязательно должны экранироваться в языках разметки, таких как XML или SGML, например, одинарные и двойные кавычки, угловые скобки, амперсанд (« '"<>& »).
Управляющие символы
(После названия каждого символа указан его 16-ричный код)
Adobe
Adobe адаптировал кодирование btoa, внеся некоторые изменения, и дав имя Ascii85. В частности, был добавлен разделитель « ~> » для обозначения конца закодированной строки и определения, где нужно обрезать раскодированную строку для получения верной длины. Делается это так: Если последний блок содержит меньше 4 байтов, то он перед кодированием дополняется нулевыми байтами, а после кодирования из последней пятерки убирается столько крайних символов, сколько нулей было добавлено.
При декодировании, последний блок дополняется до длинны 5 символом « u » (цифра 84), а после раскодировния столько же байт удаляется (см. пример ниже).
Замечание: Заполняющий символ выбран не случайно. В Base64 при перекодировании, биты просто перегруппировываются, не меняется ни их порядок ни значения (старшие биты исходной последовательности не влияют на младшие биты результата). При преобразовании в систему счисления с основанием 85 (85 не является степенью двойки) значения старших битов исходной последовательности влияют младшие биты в результате (аналогично и при обратном преобразовании). Дополнение минимальным значением (0) при кодировании и максимальным (85) при раскодировании обеспечивает сохранность старших битов.
В блоке текста Ascii85 в любом месте могут быть вставлены пробельные символы и переносы строк, в том числе и внутри пятерок букв. Они должны просто игнорироваться.
Спецификация от Adobe не содержит расширения « y » для четырех пробелов.
Содержание
Проблемы с ASCII
Позиции со 128 по 255 были пустыми. Общественность задумалась, чем их заполнить. Но у всех были разные идеи. Американский национальный институт стандартов (American National Standards Institute, ANSI) формулирует стандарты для разных отраслей. Там утвердили позиции ASCII с 0 по 127. Их никто не оспаривал. Проблема была с остальными позициями.
Какие-то загогулины, фоновые иконки, математические операторы и символы с диакретическим знаком вроде é. Но разработчики других компьютерных архитектур не поддержали инициативу. Всем хотелось внедрить свою собственную кодировку во второй половине ASCII.
Все эти различные концовки назвали кодовыми страницами.
Ссылки
-
— бесплатный облачный инструмент для преобразования текстовых надписей в ASCII графику.
Напоследок про UTF
Коды являются ключами. Если я отправлю ошибочную кодировку, вы не сможете ничего прочесть. Не забывайте об этом при отправке и получении данных. В наших повседневных инструментах это часто абстрагировано, но нам, программистам, важно понимать, что происходит под капотом.
Как нам задавать кодировку? Поскольку HTML пишется на английском, и почти все кодировки прекрасно работают с английским, мы можем указать кодировку в начале раздела .
Если HTML-документ не содержит упоминания кодировки, спецификация HTML5 предлагает такое интересное решение, как BOM-сниффинг. С его помощью мы по маркеру порядка байтов (BOM) можем определить используемую кодировку.
Краткая история кодировки
На заре своего развития интернет был исключительно англоязычным. Его авторам и пользователям не нужно было заботиться о символах других языков, и все нужды полностью покрывала кодировка American Standard Code for Information Interchange (ASCII).
ASCII — это таблица сопоставления бинарных обозначений знакам алфавита. Когда компьютер получает такую запись:
то с помощью ASCII он преобразует её во фразу «Hello world».
Один байт (восемь бит) был достаточно велик, чтобы вместить в себя любую англоязычную букву, как и управляющие символы, часть из которых использовалась телепринтерами, так что в те годы они были полезны (сегодня уже не особо). К управляющим символам относился, например 7 (0111 в двоичном представлении), который заставлял компьютер издавать сигнал; 8 (1000 в двоичном представлении) — выводил последний напечатанный символ; или 12 (1100 в двоичном представлении) — стирал весь написанный на видеотерминале текст.
В те времена компьютеры считали 8 бит за один байт (так было не всегда), так что проблем не возникало. Мы могли хранить все управляющие символы, все числа и англоязычные буквы, и даже ещё оставалось место, поскольку один байт может кодировать 255 символов, а для ASCII нужно только 127. То есть неиспользованными оставалось ещё 128 позиций в кодировке.
Вот как выглядит таблица ASCII. Двоичными числами кодируются все строчные и прописные буквы от A до Z и числа от 0 до 9. Первые 32 позиции отведены для непечатаемых управляющих символов.
Предтечи
Близкие к ASCII-арту изображения начали появляться в XIX веке. Одним из их проявлений стал фигурный текст в поэзии — каллиграммы. Общеизвестным примером может стать поэзия Гийома Аполлинера, активно использовавшего каллиграммы в своих стихах. Ещё один общеизвестный пример — творчество Льюиса Кэрролла (например, в произведении «Алиса в стране чудес»).
С изобретением печатной машинки в середине XIX в. создание изображений с помощью литер стало восприниматься как вид искусства. В 1890-х годах производители печатных машинок и агентства по найму и обучению секретарш устраивали конкурсы на самый быстрый набор текста, а также на самый лучший рисунок, созданный с помощью машинки. Один из наиболее ранних сохранившихся примеров такого искусства — рисунок бабочки, созданный в 1898 г. Флорой Стэйсси и опубликованный в журнале «Pitman’s Phonetic Journal» от 15 октября 1898 г. Картинка составлена из множества скобок, дефисов, звёздочек, точек и нескольких прописных букв «o».
Наложение символов
Благодаря символу BS (возврат на шаг) на принтере можно печатать один символ поверх другого. В ASCII было предусмотрено добавление таким образом диакритики к буквам, например:
- a BS ' → á
- a BS ` → à
- a BS ^ → â
- o BS / → ø
- c BS , → ç
- n BS ~ → ñ
Примечание: в старых шрифтах апостроф ' рисовался с наклоном влево, а тильда ~ была сдвинута вверх, так что они как раз подходили на роль акута и тильды сверху.
Если на символ накладывается тот же символ, то получается эффект жирного шрифта, а если на символ накладывается подчёркивание, то получается подчёркнутый текст.
Примечание: это используется, например, в справочной системе man.
Свойства таблицы ASCII
Как и любая систематизированная программа, ASCII обладает своими характерными свойствами. Так, например, десятеричная система исчисления (цифры от 0 до 9) преобразуется в двоичную систему исчисления (т.е. каждая десятеричная цифра преобразуется в двоичную 288=1001000 соответственно).
Буквы, располагающиеся в верхних и нижних колонках, отличаются друг от друга лишь битом, что существенно снижает уровень сложности проверки и редактирование регистра.
При всех этих свойствах кодировка ASCII работает как восьми битная, хотя изначально предусматривалась как семи битная.
Применение ASCII в программах Microsoft Office:
В случае необходимости данный вариант кодирования информации может быть использован в Microsoft Notepad и Microsoft Office Word. В рамках этих приложений документ может быть сохранен в формате ASCII , но в этом случае при наборе текста невозможно будет использование некоторых функций.
В частности, будет недоступно выделение жирным и полужирным шрифтом, потому что кодирование сохраняет лишь смысл набранной информации, а не общий вид и форму. Добавить такие коды в документ вы можете с помощью следующих программных приложений:
- Microsoft Excel;
- Microsoft FrontPage;
- Microsoft InfoPath;
- Microsoft OneNote;
- Microsoft Outlook;
- Microsoft PowerPoint;
- Microsoft Project.
При этом стоит учитывать, что набирая код ASCII в этих приложениях необходимо удерживать нажатой клавиатурную клавишу ALT.
Конечно, все необходимые коды требует более длительного и обстоятельного изучения, но это выходит за пределы нашей сегодняшней статьи. Надеюсь, что она оказалась для Вас действительно полезной.
ASCII (англ. American Standard Code for Information Interchange ) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].
RFC 1924
Опубликованный 1 апреля 1996, и, по-видимому, шуточный, информационный RFC 1924: «A Compact Representation of IPv6 Addresses» (компактное представление IPv6 адресов) предлагает кодировать IPv6 адреса как числа в системе счисления по основанию 85 (base-85, по аналогии с base-64). Это предложение отличается от приведенных выше схем тем, что во первых использует набор из других 85 ASCII символов, а во вторых обрабатывает всю группу из 128 бит как единое число, преобразуя его в 20 итоговых символов, а не группами по 32 бита. Также, не допускаются пробелы.
Набор символов выбран так, чтобы исключить использование наиболее проблемных символов ( "',./:[]\ ), но все также содержит символы, которые нужно экранировать в SGML протоколах, например в XML.
Для того, чтобы грамотно использовать ASCII , необходимо расширить знания в данной сфере и о возможностях кодирования.
Примечания
- ↑Crasher, журнал «Хакер», статья «За кулисами арт-сцены»
- ↑Modern Mechanix, октябрь 1948
- ↑ telnet towel.blinkenlights.nl
- ↑Jansen, SimonSTAR WARS In a way you've never seen before (англ.) . — ASCII-версия IV эпизода «Звёздных войн», адаптированная для просмотра в обычном интернет браузере. Архивировано из первоисточника 25 июня 2012.Проверено 27 октября 2008.
- ↑BG_ASCII — интерактивная программа для работы с ascii графикой
- ↑Ascgen dotNET — бесплатная программа для преобразования цифровых изображений в псевдографику
- Компьютерное искусство
- Текстовый интерфейс
Wikimedia Foundation . 2010 .
Автоматизация
Существуют различные компьютерные программы для создания ASCII-графики. Их можно поделить на две группы. Первая представляет собой некое подобие графических редакторов, только в текстовом режиме. Во вторую группу входят программы, конвертирующие графическое изображение в ASCII-графику. [5] [6]
Применение
Помимо «чистого искусства» (рисунка ради рисунка), ASCII-арт часто используется в оформительских целях у варез-групп, у демомейкеров. Варезные группы обычно включают файлы .nfo в своё программное обеспечение, креки или другие нелегальные релизы. Такой ASCII-арт обычно включает имя варез-группы и, возможно, несколько ASCII-картинок. Примером такой группы является Echelon.
ASCII-арт часто используется для оформления 1-2-3-строчной подписи в электронных письмах. @>->--- изображает розочку, *,…,* изображает оскал.
Во времена BBS ASCII-арт использовался для графического оформления оных, так как применять другие виды графики возможности не было.
История
В первых поколениях компьютеров не было возможности отображать графику. Поэтому программисты заинтересовались возможностью отбражения графики с помощью текстовых символов и вывода полученных изображений на экран терминала и печать. Начиная с 1960-х гг., это стало популярным развлечением программистов — написать программу, которая «рисует» заданное изображение текстовыми символами. Примеры этому можно наблюдать в советских фильмах «Служебный роман» (репродукция Моны Лизы) и «Берегите мужчин» (портрет Графа). Позднее эти развлечения получили название ASCII-арта. ASCII-арт развивался, в частности, в середине 1980-х на платформах Amiga и Commodore 64. Стандартный шрифт компьютера Amiga содержал очень высокие символы «/» и «\», из которых, располагая их в разных строках, можно было составить совершенно ровные непрерывные линии. Чаще всего такими линиями изображались названия групп, чем и объясняется, что говоря об ASCII-арте, говорят прежде всего именно о шрифтах. В самом начале шрифты были чёткими, хорошо читаемыми. Позднее шрифты усложнялись, делались интереснее. Так впервые заговорили о школах «Oldschool» и «Newschool».
Платформу PC искусство текстового режима облюбовало с появлением нового стандарта ANSI, давшему реальное преимущество перед Amiga. ANSI позволял задавать цвет символу, что в совокупности с имеющимися в таблице символов блоками, породило новое мощное ответвление — ANSI art. Первой арт-группой, показавшей изобразительные возможности на высоком уровне, стала Aces of ANSI Art (A.A.A.), за которой потянулись последователи.
И лишь позже было замечено, что если использовать символ, почти полностью заполняющий ячейку (например $), а к нему добавить менее плотный символ, — то таким образом можно сглаживать общую форму (этот приём получил название «антиалиасинг» (от англ. antialiasing )). Так, в конечном итоге, зародилась современная школа рисования ASCII.
К середине девяностых сцена полностью сформировалась, главными направлениями рисования в текстовом режиме стали ASCII scene, ANSI scene и Amiga style (который часто называют oldschool).
…Тут важно сказать, что на PC textmode-искусство началось с имитации Amiga style, а закончилось картинками с множеством «$» и без единого «\» или «/». PC художники, вполне естественно, назвали старый стиль oldschool, а новый, с долларами, — newschool. Им, конечно, было невдомек, что на Amiga названия уже были зарезервированы. В результате произошла путаница, а художники Amiga получили ещё один повод презирать PC и все с ним связанное. [1]
…Однако известно, что это арт-направление было известно намного раньше, чем в 60-х годах, а именно в 1948 году. [2] «Рисовали» тогда на печатных машинках. Но это было очень трудоёмким видом искусства. Ведь одна ошибка — и придётся начинать сначала.
Это всё?
Unicode ещё не завершён. Как и в случае с любым стандартом, мы что-то добавляем, убираем, предлагаем новое. Никакие спецификации нельзя назвать «завершёнными». Обычно в год бывает 1-2 релиза, найти их описание можно здесь.
Если вы дочитали до конца, то вы молодцы. Предлагаю сделать домашнюю работу. Посмотрите, как могут ломаться сайты при использовании неправильной кодировки. Я воспользовался этим расширением для Google Chrome, поменял кодировку и попытался открывать разные страницы. Информация была совершенно нечитаемой. Попробуйте сами, как выглядит бнопня. Это поможет понять, насколько важна кодировка.
Кодировка
Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса) и нижнюю черту (подчёркивание) соответственно.
Что такое кодовые страницы ASCII?
Здесь собрана коллекция из более чем 465 разных кодовых страниц! Существовали разные страницы даже в рамках какого-то одного языка, например, для греческого и китайского. Как можно было стандартизировать этот бардак? Или хотя бы заставить его работать между разными языками? Или между разными кодовыми страницами для одного языка? В языках, отличающихся от английского? У китайцев больше 100 000 иероглифов. ASCII даже не может всех их вместить, даже если бы решили отдать все пустые позиции под китайские символы.
Эта проблема даже получила название Mojibake (бнопня, кракозябры). Так говорят про искажённый текст, который получается при использовании некорректной кодировки. В переводе с японского mojibake означает «преобразование символов».
Пример бнопни (кракозябров).
Содержание
Пример
Например, исторический слоган Википедии,
Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.
будучи закодированным в Ascii85 выглядит следующим образом:
Текст | M | a | n | . | s | u | r | e | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ASCII | 77 | 97 | 110 | 32 | . | 115 | 117 | 114 | 101 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
двоичное представление | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | . | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
десятичное представление | 1 298 230 816 = 24×85 4 + 73×85 3 + 80×85 2 + 78×85 + 61 | . | 1 937 076 837 = 37×85 4 + 9×85 3 + 17×85 2 + 44×85 + 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
85-ричное представление (+33) | 24 (57) | 73 (106) | 80 (113) | 78 (111) | 61 (94) | . | 37 (70) | 9 (42) | 17 (50) | 44 (77) | 22 (55) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
ASCII | 9 | j | q | o | ^ | . | F | * | 2 | M | 7 |
Так так последняя четверка не полная, мы должны добить ее нулями:
Текст | . | \0 | \0 | \0 | ||||||||||||||||||||||||||||
ASCII | 46 | 0 | 0 | 0 | ||||||||||||||||||||||||||||
двоичное представление | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
десятичное представление | 771 751 936 = 14×85 4 + 66×85 3 + 56×85 2 + 74×85 + 46 | |||||||||||||||||||||||||||||||
85-ричное представление (+33) | 14 (47) | 66 (99) | 56 (89) | 74 (107) | 46 (79) | |||||||||||||||||||||||||||
ASCII | / | c | Y | k | O |
Мы добавили 3 байта при кодировании и должны убрать три последних символа 'YkO' из результата.
Раскодирование абсолютно симметрично, за исключением последней пятерки, которую мы добиваем символами 'u':
ASCII | / | c | u | u | u | |||||||||||||||||||||||||||
85-ричное представление (+33) | 14 (47) | 66 (99) | 84 (117) | 84 (117) | 84 (117) | |||||||||||||||||||||||||||
десятичное представление | 771 955 124 = 14×85 4 + 66×85 3 + 84×85 2 + 84×85 + 84 | |||||||||||||||||||||||||||||||
двоичное представление | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
ASCII | 46 | 3 | 25 | 180 | ||||||||||||||||||||||||||||
Текст | . | [ ETX ] | [ EM ] | не определено в ASCII |
В исходном примере не было четверки из нулевых байтов, по этому мы не увидели сокращенной записи 'z' в результате.
Формат и распространение
Смотреть что такое "ASCII-графика" в других словарях:
ASCII графика — … Википедия
ASCII (значения) — ASCII может значить: ASCII американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. ASCIIZ (Нуль терминированная строка) способ представления строк в памяти компьютера, при котором конец… … Википедия
ANSI-графика — Заставка BitchX, выполненная в ANSI графике ANSI графика расширение ASCII графики. Этот вид цифровой графики создаёт картинку из символов, но использует не только символы, предлагаемые кодировкой ASCII, а все 224 печатных символа, 16 цветов… … Википедия
Тайловая графика — SuperTux. Хорошо заметны тайлы повторяющиеся фрагменты изображения … Википедия
Чат-арт — / | / // / / / / | / / / / /| | / / / / / / / /| | / / / / / / / | / / / / / / / / |/ , / / / / / | / / / / / / / | / / | | / / ASCII графика (от англ. ASCII artwork) форма изобразительного искусства, использующая символы терминальный сервер) или … Википедия
MediaGoblin — GNU MediaGoblin … Википедия
Текстовый файл — Запрос «TXT» перенаправляется сюда; см. также другие значения. Пиктограммное описание текстового файла с CSV данными Текстовый файл компьютер … Википедия
Кошечка (мультфильм) — У этого термина существуют и другие значения, см. Кошечка. Кошечка … Википедия
Текстовый видеорежим — Norton Commander работал в текстовом режиме. Текстовый видеорежим режим компьютерного видеоадаптера, в котором экран представлен в виде решётки знакомест (а не пикс … Википедия
JAPH — (англ. Just Another Perl Hacker) короткая программа на Perl, выводящая строчку «Just Another Perl Hacker,» («Ещё один хакер перла,») (запятая в конце не обязательна). Короткие JAPH программы используются обычно в качестве подписей.… … Википедия
Если вы пишете международное приложение, использующее несколько языков, то вам нужно кое-что знать о кодировке. Она отвечает за то, как текст отображается на экране. Я вкратце расскажу об истории кодировки и о её стандартизации, а затем мы поговорим о её использовании. Затронем немного и теорию информатики.
Так появился Unicode
Unicode расшифровывают как Universal Coded Character Set (UCS), и у него есть официальное обозначение ISO/IEC 10646. Но обычно все используют название Unicode.
Этот стандарт помог решить проблемы, возникавшие из-за кодировки и кодовых страниц. Он содержит множество кодовых пунктов (кодовых точек), присвоенных символам из языков и культур со всего мира. То есть Unicode — это набор символов. С его помощью можно сопоставить некую абстракцию с буквой, на которую мы хотим ссылаться. И так сделано для каждого символа, даже египетских иероглифов.
Кто-то проделал огромную работу, сопоставляя каждый символ во всех языках с уникальными кодами. Вот как это выглядит:
Префикс U+ говорит о том, что это стандарт Unicode, а число — это результат преобразования двоичных чисел. Стандарт использует шестнадцатеричную нотацию, которая является упрощённым представлением двоичных чисел. Здесь вы можете ввести в поле что угодно и посмотреть, как это будет преобразовано в Unicode. А здесь можно полюбоваться на все 143 859 кодовых пунктов.
Уточню на всякий случай: речь идёт о большом словаре кодовых пунктов, присвоенных всевозможным символам. Это очень большой набор символов, не более того.
Осталось добавить последний ингредиент.
Что такое UTF-8 и как она работает?
UTF-8 кодирует с помощью одного байта каждый кодовый пункт Unicode с 0 по 127 (как в ASCII). То есть если вы писали программу с использованием ASCII, а ваши пользователи применяют UTF-8, они не заметят ничего необычного. Всё будет работать как задумано. Обратите внимание, как это важно. Нам нужно было сохранить обратную совместимость с ASCII в ходе массового внедрения UTF-8. И эта кодировка ничего не ломает.
Как следует из названия, кодовый пункт состоит из 8 битов (один байт). В Unicode есть символы, которые занимают несколько байтов (вплоть до 6). Это называют переменной длиной. В разных языках удельное количество байтов разное. В английском — 1, европейские языки (с латинским алфавитом), иврит и арабский представлены с помощью двух байтов на кодовый пункт. Для китайского, японского, корейского и других азиатских языков используют по три байта.
Если нужно, чтобы символ занимал больше одного байта, то применяется битовая комбинация, обозначающая переход — он говорит о том, что символ продолжается в нескольких следующих байтах.
И теперь мы, как по волшебству, пришли к соглашению, как закодировать шумерскую клинопись (Хабр её не отображает), а также значки emoji!
Подытожив сказанное: сначала читаем BOM, чтобы определить версию кодировки, затем преобразуем файл в кодовые пункты Unicode, а потом выводим на экран символы из набора Unicode.
Мероприятия
До сегодняшнего дня среди программистов и ИТ-специалистов сохранилась традиция проводить развлекательные мероприятия (учебные курсы или конкурсы) с демонстрированием работ ASCII графики. В 2007 году прошло награждение победителей работ в городе Ижевске.
Введение в кодировку
Компьютеры понимают лишь двоичные числа — нули и единицы, это их язык. Больше ничего. Одно число называется байтом, каждый байт состоит из восьми битов. То есть восемь нулей и единиц составляют один байт. Внутри компьютеров всё сводится к двоичности — языки программирования, движений мыши, нажатия клавиш и все слова на экране. Но если статья, которую вы читаете, раньше была набором нулей и единиц, то как двоичные числа превратились в текст? Давайте разберёмся.
Содержание
Что это такое?
ASCII представляет собой кодировочную таблицу печатных символов (см. скриншот №1), набираемых на компьютерной клавиатуре, для передачи информации и некоторых кодов. Иными словами происходит кодирование алфавита и десятичных цифр в соответствующие символы, представляющие и несущие в себе необходимую информацию.
Кодировка ASCII была разработана в Америке, поэтому стандартная кодировочная таблица обычно включает в себя английский алфавит с цифрами, что в общей сложности составляет около 128 символов. Но тогда возникает справедливый вопрос: что делать, если необходима кодировка национального алфавита?
Для решения подобных вопросов были разработаны другие версии таблицы ASCII . Например, для языков с иноязычной структурой были или убраны буквы английского алфавита, или к ним добавлялись дополнительные символы в виде национального алфавита. Так, в кодировке ASCII могут присутствовать русские буквы для национального использования (см. скриншот №2).
Безумие какое-то.
Именно! Не было ни единого шанса надёжно преобразовывать данные. Интернет — это лишь монструозное соединение компьютеров по всему миру. Представьте, что все страны решили использовать собственные стандарты. Например, греческие компьютеры принимают только греческий язык, а английские отправляют только английский. Это как кричать в пустой пещере, тебя никто не услышит.
ASCII уже не удовлетворял жизненным требованиям. Для всемирного интернета нужно было создать что-то другое, либо пришлось бы иметь дело с сотнями кодовых страниц.
��� Если только ������ вы не хотели ��� бы ��� читать подобные параграфы. �֎֏0590��׀ׁׂ׃ׅׄ׆ׇ
Где применяется система кодировки ASCII?
Данная кодировочная система необходима не только для набора текстовой информации на клавиатуре. Она также используется в графике. Например, в программе ASCII Art Maker графические изображения различных расширений состоят из спектра символов кодировки ASCII (см. скриншот №3).
Как правило, подобные программы можно разделить на те, что выполняют функцию графических редакторов, инвертируя изображение в текст, и на те, что конвертируют изображение в ASCII -графику. Всем известный смайлик (или как его еще называют « улыбающееся человеческое лицо ») тоже является примером кодировочного символа.
Данный метод кодировки также может быть востребован во время написания или создания документа HTML. Например, вы вводите определённый и необходимый вам набор знаков, а при просмотре самой страницы на экран будет выведен символ, соответствующий данному коду.
Кроме всего прочего данный вид кодировки необходим при создании многоязычного сайта, потому что знаки, которые не входят в ту или иную национальную таблицу, нужно будет заменить ASCII кодами. Если читатель непосредственно связан с информационно-коммуникативными технологиями (ИКТ), то ему будет полезно ознакомиться и с такими системами как:
- Переносимый набор символов;
- Управляющие символы;
- EBCDIC;
- VISCII;
- YUSCII;
- Юникод;
- ASCII art;
- КОИ-8.
Основная идея
Основная потребность в кодировании данных текстом проистекает из необходимости передавать бинарные данные по существующим протоколам, предназначенным исключительно для передачи текста (например, e-mail). Такие протоколы могут гарантированно передавать только 7-битные значения (и при этом нужно избегать использования управляющих символов ASCII), а также могут требовать вставки символа конца строки для ограничения длины строк, к тому же допускают пробельные отступы. В итоге остается только 94 печатных символа, которые можно использовать.
4 байта могут содержать 2 32 = 4 294 967 296 различных значений. 5 цифр в системе счисления с основанием 85 дают 85 5 = 4 437 053 125 различных значения, чего вполне достаточно для однозначного представления 32-битных значений. Пять цифр в системе счисления с основанием 84 могут предоставить только 84 5 = 4 182 119 424 значений. Следовательно 85 является минимальным основанием системы счисления, в которой 4 байта можно закодировать 5-ю цифрами, его и выбираем.
При кодировании разделяем поток данных на группы по 4 байта, и рассматриваем каждую из них, как 32-битное число, со старшим байтом в начале. Последовательным делением на 85 получаем 5 цифр 85-ричной системы счисления. Далее каждая цифра кодируется печатным символом ASCII и выводится в выходной поток, с сохранением порядка, от старшего разряда к младшему.
Кодирование цифры ASCII символами осуществляется путем увеличением на 33, то есть символами с кодами от 33 (« ! ») до 117 (« u »).
Поскольку нулевые значения встречаются не так уж и редко, то ради дополнительного сжатия сделано дополнительное исключение — нулевая четверка байтов кодируется единственным символом « z » вместо « . ».
Группа символов, которые при раскодировании дают значение больше чем 2 32 − 1 (кодируемое как « s8W-! ») приводят к ошибке раскодировки, равно как и символ « z » внутри группы. Все пробельные отступы между символами игнорируются и могут вставляться произвольно для удобного форматирования.
Единственным недостатком Ascii85 является то, что в полученном тексте будут встречаться символы (такие как слеш и кавычки), которые имеют особые значения в языках программирования и текстовых протоколах.
Оригинальная программа btoa всегда кодировала полными группами (последняя дополнялась нулями) и добавляла перед полученным текстом строку «xbtoa Begin», а после — «xbtoa End», за которой следовал размер исходного файла (десятичный и шестнадцатеричный) и три 32-битных контрольных суммы. Раскодировщик использовал информацию о исходной длине, чтобы узнать сколько дополняющих нулей было вставлено.
В данной программе также поддерживалось специальное значение « z » для кодирования нулей (0x00000000), а также « y » — для группы их четырех пробелов (0x20202020).
Структурные свойства таблицы
-
0—9 представляются своими двоичными значениями (например, 5=01012), перед которыми стоит 00112. Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева 00112 к каждому двоично-десятичному полубайту. A-Z верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон. Буквы представляются своими порядковыми номерами в алфавите, записанными в двоичной системе счисления, перед которыми стоит 1002 (для букв верхнего регистра) или 1102 (для букв нижнего регистра).
Unicode Transform Protocol (UTF)
UTF — протокол кодирования кодовых пунктов в Unicode. Он прописан в стандарте и позволяет кодировать любой кодовый пункт. Однако существуют разные типы UTF. Они различаются количеством байтов, используемых для кодировки одного пункта. В UTF-8 используется один байт на пункт, в UTF-16 — два байта, в UTF-32 — четыре байта.
Но если у нас есть три разные кодировки, то как узнать, какая из них применяется в конкретном файле? Для этого используют маркер последовательности байтов (Byte Order Mark, BOM), который ещё называют сигнатурой кодировки (Encoding Signature). BOM — это двухбайтный маркер в начале файл, который говорит о том, какая именно кодировка тут применена.
В интернете чаще всего используют UTF-8, она также прописана как предпочтительная в стандарте HTML5, так что уделю ей больше всего внимания.
Этот график построен в 2012-м, UTF-8 становилась доминирующей кодировкой. И всё ещё ею является.
График показывает распространённость UTF-8.
Полезное
Заключение
При написании этой статьи я узнал о Майкле Эверсоне. С 1993 года он предложил больше 200 изменений в Unicode, добавил в стандарт тысячи символов. По состоянию на 2003 год он считался самым продуктивным участником. Он один очень сильно повлиял на облик Unicode. Майкл — один из тех, кто сделал интернет таким, каким мы его сегодня знаем. Очень впечатляет.
Надеюсь, мне удалось показать вам, для чего нужны кодировки, какие проблемы они решают, и что происходит при их сбоях.
Вывод видео в ASCII-арте
В мультимедийном проигрывателе MPlayer существует поддержка aalib, позволяющая выводить видео в режиме ASCII. VLC Media Player может выводить видео в ASCII. В оболочке для мультимедийного проигрывателя XINE, xine-ui также присутствует возможность смотреть видео в ASCII (для этого видео запускается через отдельную команду aaxine).
Более того, существует проект по выводу графики X сервера через эту библиотеку. Тем самым вся графическая оболочка может отображаться в виде ASCII-арта.
Национальные варианты ASCII
Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита) существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных латинских букв — на их месте размещались национальные символы (для русского и греческого — только заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету» с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно полностью устранить латинские буквы и занять всё пространство под свои символы. См. также КОИ-7.
В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.
См. также
Читайте также: