Таблиця символів ascii, others, adminstuff

Примітка: Dec означає десятковий код символу, Oct восьмеричний код символу, Hex шістнадцятковий код символу, Char як символ виглядає.

Як легко помітити, в цьому кодуванні представлені тільки латинські букви, причому ті, які використовуються в англійській мові. Є також арифметичні та інші службові символи. Але немає ні російських букв, ні навіть спеціальних латинських для німецької або французької мови. Це легко пояснити - кодування розроблялася саме як американський стандарт. Коли комп'ютери стали застосовуватися в усьому світі, треба було кодувати та інші символи.

Для цього було прийнято рішення використовувати восьмий біт в кожному байті. Тим самим виявилися доступні ще 128 значень (від 80 до FF), які можна було використовувати для кодування символів. Перша з восьмибітних таблиць - "розширений ASCII" (Extended ASCII) - включала в себе різні варіанти латинських символів, що застосовуються в деяких мовах Західної Європи. Також в ній були інші додаткові символи, включаючи псевдографіку.

Псевдографічні символи дозволяють, виводячи на екран тільки текстові символи, забезпечувати деяку подобу графіки. За допомогою псевдографіки працює, наприклад, програма для управління файлами FAR Manager.

Російських букв в таблиці Extended ASCII не було. У Росії (раніше - СРСР) і в інших державах створювалися свої кодування, що дозволяють представляти в 8-бітних текстових файлах специфічні "національні" символи - латинські букви польського і чеського мов, кирилицю (включаючи російські літери) та інші алфавіти.

У всіх кодуваннях, що набули поширення, перші 127 символів (тобто значення байта при восьмому бите, рівному 0) збігаються з ASCII. Таким чином, файл у форматі ASCII працює в будь-який з цих кодувань; букви англійської мови в них представлені однаково.

Організація ISO (International Standardization Organization - Міжнародна організація зі стандартів) прийняла групу стандартів ISO 8859. Вона визначає 8-бітові кодування для різних груп мов. Так, ISO 8859-1 - це Extended ASCII, таблиця для США і Західної Європи. А ISO 8859-5 - таблиця для кирилиці (включаючи російську мову).

Однак з історичних причин кодування ISO 8859-5 не прижилася. Реально для російської мови застосовуються наступні кодування:

- Code Page 866 (CP866), вона ж "DOS", вона ж "альтернативне кодування ГОСТ". Широко застосовувалася до середини 90-х років; тепер використовується обмежено. Практично не застосовується для поширення текстів в Інтернеті.
- ЯКІ-8. Розроблено в 70-80-і роки. Є загальноприйнятим стандартом для передачі поштових повідомлень в російському Інтернеті. Широко застосовується також в операційних системах сімейства Unix, включаючи Linux. Варіант ЯКІ-8, розрахований на російську мову, називається ЯКІ-8R; існують версії для інших кириличних мов (так, KOI8-U - варіант для української мови).
- Code Page 1251, CP1251. Windows-1251. Розроблено компанією Microsoft для підтримки російської мови в системі Windows.

Основною перевагою CP866 було збереження символів псевдографіки на тих же місцях, що і в Extended ASCII; тому могли без змін працювати закордонні текстові програми, наприклад, знаменитий Norton Commander. Нині CP866 використовується для програм під Windows, що працюють в текстових вікнах або в повноекранному текстовому режимі, включаючи FAR Manager.

Таблиця 3. Кодування ЯКІ-8R (символи з 80 по FF)

Таблиця 4. Кодування CP1251 (символи з 80 по FF)

Як можна помітити, в таблиці кодування CP1251 російські літери розташовані в алфавітному порядку (за винятком, щоправда, букви Е). Завдяки такому розташуванню комп'ютерним програмам дуже просто здійснювати сортування за алфавітом.

А ось в ЯКІ-8R порядок російських букв здається випадковим. Але насправді це не так.

У багатьох старих програмах при обробці або передачі тексту губився 8-й біт. (Зараз такі програми практично вимерли, але в кінці 80-х - початку 90-х років вони були широко поширені). Щоб отримати з 8-бітного значення 7-бітове, досить відняти від старшої цифри 8; наприклад, E1 перетворюється в 61.

А тепер порівняйте ЯКІ-8R з таблицею ASCII (табл.1). Ви виявите, що російські букви поставлені в точну відповідність з латинськими. Якщо зникне восьмий біт, рядкові російські букви перетворюються в великі латинські, а великі російські - в малі латинські. Так, E1 в ЯКІ-8 - це російське "А", тоді як 61 в ASCII - латинське "a".

Отже, ЯКІ-8 дозволяє зберігати читаність російського тексту при втраті 8-го біта. "Привіт усім" перетворюється в "pRIWET WSEM".

Останнім часом і алфавітний порядок розташування символів в таблиці кодування, і читаність при втраті 8-го біта втратили вирішальне значення. Восьмий біт в сучасних комп'ютерах не губиться ні при передачі, ні при обробці. А сортування за алфавітом проводиться з урахуванням кодування, а не простим порівнянням кодів. (До речі, коди CP1251 розташовані в повному обсязі за алфавітом - буква Е не перебуває на своєму місці).

Іноді буває, що комп'ютер розшифровує російськомовні листи і зовсім по таблиці, не призначеної для російської мови. Тоді замість російських букв з'являються безглуздий набір символів (наприклад, латинські букви східно-європейських мов); їх часто називають "крокозябра".

У більшості випадків сучасні програми справляються з визначенням кодувань документів Інтернету (електронних листів і Web-сторінок) самостійно. Але іноді вони "дають осічку", і тоді можна побачити дивні послідовності російських букв або ж "крокозябри". Як правило, щоб в такій ситуації вивести на екран справжній текст, досить вибрати кодування вручну в меню програми.

Схожі статті