ASCII (акроним – „Американски стандартен код за обмен на информация“, чете се „аски“) е символна кодова таблица на основата на латинската азбука. ASCII кодът служи за представяне на текст в компютрите и други комуникационни и управляващи устройства. Всички съвременни устройства, използващи писмени знаци, поддържат ASCII, както и множество допълнителни символи. До 2007 ASCII е най-използваната символна таблица в World Wide Web (WWW), но след това я измества UTF-8, която е надмножество на ASCII.
ASCII е разработен въз основа на някои телеграфни кодове. Работата по стандарта започва на 6 октомври 1960 г., когато е първото събрание на Американската асоциация за стандартизация, подкомитет X3.2. Първото издание на стандарта, публикувано през 1963 г., преминава през сериозни промени през 1967 г., а най-скорошната актуализация е през 1986 г. В сравнение с по-ранните телеграфни кодове, подреждането на знаците в ASCII е по-удобно за сортиране на списъци и за устройства, различни от телепринтерите.
ASCII дефинира кодове за 33 непечатими контролни символа (които служат за управление на устройства за обработка на текст) плюс следните 95 печатими символа (първият от които е знакът интервал):
!"#$%&'()*+,-./ 0123456789:;<=>? @ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^_ `abcdefghijklmno pqrstuvwxyz{|}~
Въведение ASCII определя еднозначно съответствие между двоични кодове и писмени знаци (глифи), правейки възможна обмяната на текстова информация между отделни цифрови устройства, както и нейното съхраняване в тези устройства. Важно е да се отбележи, че ASCII определя съответствие между кода и семантичната стойност на глифа, а не негова конкретна реализация. Компютърните шрифтове определят реализациите на глифите. Да вземем за пример главната латинска буква A – нейният двоичен код е 0100 0001, което е 65 в десетичен код. В един обикновен текстов файл в ASCII код тя ще бъде представена именно с този код – 65. Но за да се изобрази на екрана, е нужен шрифт, който от своя страна съпоставя на този код някакво изображение. Това изображение е различно при отделните шрифтове, но смисълът му е един и същ – главна латинска буква A.
ASCII е 7-битов код, което означава, че може да представи 128 символа. Той често се допълва до 8 бита чрез добавяне на една или повече допълнителни азбуки (освен латинската). По времето на своето създаване за изход на текст са се използвали предимно печатащи устройства. Затова в ASCII се съдържат и контролни кодове, уточняващи начина, по който да се отпечатат символите.
История Американският стандартен код за обмен на информация се разработва под ръководството на Американската асоциация за стандартизация (наричана комитет X3), от подкомитета X3.2, а по-късно – от подкомитета X3.2.4. След като се преименува, днес Американската асоциация за стандартизация се нарича Американски институт за стандартизация
Преди ASCII През 60-те години на XX век липсва общ стандарт и всеки производител на хардуер използва собствен код. По това време има над шестдесет различни начина за представяне на символи, но различните машини не могат да обменят информация поради различното представяне на буквите, цифрите и другите символи. Само IBM използва девет различни поредици от символи за различните си устройства.
1961 – Започване на работата Боб Бъмър – програмист в IBM, наричан баща на ASCII – обръща внимание, че с използването на девет различни стандарта машините на IBM не могат да комуникират помежду си, а още по-малко с машините от останалия свят. През май 1961 г. той предлага на Американския институт за стандартизация да се въведе и използва общ стандарт между компютрите. За работа по проекта се създава подкомитет X3.2, съставен от представители на повечето производители на компютри.
1963 – Годината на раждане на ASCII Всеки от производителите настоява да запази своя начин на представяне на символите. Повече от две години са нужни на комитета, за да постигнат съгласие за един общ код. Подкомитетът X3.2 разработва ASCII на базата на по-ранните системи за кодиране на телепринтерите. Подобно на други символни кодировки, ASCII определя съответствие на цифровите битови шаблони със символи (печатими и непечатими). Това позволява на кодиращите устройства да обменят, обработват и запазват информация в символен вид. За да включи 26-те латински букви, 10-те арабски цифри и специалните символи (от 11 до 25 при различните тогавашни кодировки), новият код трябвало да съдържа над 64 знака.
Обсъждало се е да бъде вкарана променяща функция, която да позволи над 64 знака да бъдат представени в 6-битов код. Това би направило кодировката по-икономична, но по-малко надеждна за предаване на данни, тъй като грешка в променящия код ще направи данните нечетими. Това предложение се отхвърля и се решава, че ASCII ще бъде 7-битов код.
Комитетът обсъжда и 8-битов код, тъй като това би позволило два 4-битови шаблона за ефективно представяне на двоично кодирано десетично число. Само че това би изисквало при всеки обмен на данни да се пращат осем бита, дори когато седем са достатъчни. За да се намалят разходите по изпращане на данни, комитетът избира 7-битов код.
Първата публикация на ASCII става през 1963 г. от комитета като били оставени 28 символа без предназначение за по-късна стандартизация. Дебатирало се е дали да бъдат вкарани още контролни символи вместо малките букви от английската азбука, но било взето решение малките букви да бъдат вкарани на 6 – 7 колона. Това породило разлика между битовите шаблони на малките и големите букви с един бит, което опростило намирането на сходство между две букви, без да се има предвид дали е малка или голяма буква, по-лесно, а също улеснило правенето на принтери и клавиатури.
1963 – 1964 – Първи опит за прилагане на ASCII За първи път с търговска насоченост ASCII е използван на 7-битов телепринтерски код за мрежата TWX (TeletypeWriter eXchange) на „American Telephone and Telegraph Company“ (АТ§Т) през 1963. От 1963 до 1964 Ай Би Ем работят здраво по новата си операционна система/360 (OС/360), но когато операционната система била готова станало ясно, че няма да успеят да завършват принтерите и перфокартите навреме за официалното пускане на системата на пазара. Това, което се опитали да направят е да дадат възможност на операционната система да превключва между ASCII и EBCDIC (8-битова кодировка използвана от Ай Би Ем), но начинанието завършило с неуспех.
ASCII между 1964 – 1981 След проваления опит на Ай Би Ем да прокара общ стандарт в технологиите си се създава дупка от 18 години, в които не се чува нищо за ASCII. Работата на производители продължава по същия начин, както преди създаването на ASCII, а единствения компютър използвал този стандарт през тези 18 години е UNIVAC 1050.
1981 – Завръщането на ASCII Първият компютър на Ай Би Ем бил произведен през тази година и отбелязва началото на използването на ASCII в компютрите. Това е най-важното събитие за стандарта, който предстои да се превърне в глобално използван. Оттогава нататък всеки един компютър е правен така, че да е възможно най-съвместим с ASCII. Възникват и разширени стандарти, които отново са ASCII базирани.
ASCII е все още използван, изключвайки „Windows“ машините, които използват уникод.
ASCII контролни символи Първоначално ASCII таблицата е създадена за обмен на информация между терминали и периферни устройства. ASCII запазва първите 32 символа (кодове с номера 0 – 31) за контролни знаци: служещи да контролират устройства (като принтери), които ползват ASCII за да предоставят мета-информация за потоци от данни, обработвани и съхранявани на различни видове носители. Например, код 10 представлява функция за „нов ред“ (което кара принтера да подава хартия), а код 8 представлява „връщане назад“.
Едно от първите устройства ползващи ASCII e Теле-шрифт модел 33 ASR, което е било терминал за печат с перфо-лента с опция четене и писане. Перфо-лентата е била много популярно средство за дългосрочно съхранение на данни до 1980 г. – значително по-евтини и в някои отношения по-стабилни носители от магнитна лента. Теле-шрифт Model 33 ползва кодове 17 (Control-Q, DC1, известен също като XON), 19 (Control-S, DC3, известен също като XOFF) и 127 (Изтриване), които дефакто стават стандарти. В модела 33 за пръв път е използвана и звуковата индикация Control-G (BEL) – конструирана със звънец, който се задейства механично, като получи BEL символ.
Някои видове софтуер дават специални значения на ASCII символите, изпращани от терминала до софтуера. Операционните системи от Digital Equipment Corporation, например, тълкуват DEL като команда „изтрии последно въведения символ“. Тази интерпретация също се използва често при Unix системи. Повечето други системи, използват BS вместо DEL за тази функция, а DEL означава „изтрии символа на мястото на курсора“. Символът „escape“ (код 27) е първоначално замислян да изпраща контролни символи като литерали, вместо да извиква тяхното значение. Същото значение на „escape“ се среща и в URL кодирането, низове в езика C и други системи, в които определени символи имат запазено значение. С времето, това значение е било променено.
Поради появилите се с времето интерпретации на контролните символи неминуемо се появяват и проблеми при прехвърляне на файлове между системите. Най-добрия пример за това е проблемът с „новия ред“ на различни операционни системи.
В библиотеките на С и конвенциите на Unix, символът „null“ се използва да се прекрати символен низ. Такива низове са познати като „ASCIIZ“ като „Z“ представлява „0“ (zero).
В днешно време идеята за ASCII таблицата е доразвита и управлението на потоците от данни става с форматиращи файлове, езици за управление на устройства (като PostScript) и стандартни протоколи. Поради тази причина много от контролните символи вече или изобщо не се използват или се използват не по първоначалното им предназначение.
ASCII контролни символи – диаграма