Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модуль 1+.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
438 Кб
Скачать
☆

3. Кодування тексту

Починаючи з 60-х років, комп'ютери все більше стали використовувати для обробки текстової інформації і в даний час велика частина ПК в світі зайнята обробкою саме текстової інформації.

 Традиційно для кодування одного символу використовується кількість інформації рівна 1 байту (1 байт = 8 бітів). Для кодування одного символу потрібно один байт інформації. Враховуючи, що кожен біт приймає значення 1 або 0, за допомогою 1 байта можна закодувати 256 різних символів. (2^8 = 256)

Кодування полягає в тому, що кожному символу ставиться у відповідність унікальний двійковий код від 00000000 до 11111111 (або десятковий код від 0 до 255). Важливо, що присвоєння символу конкретного коду - це питання угоди, яка фіксується кодовою таблицею (наприклад, 4 ASCII).

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

Візьмемо число 57. При використанні в тексті кожна цифра буде представлена ​​своїм кодом відповідно до таблиці ASCII. У двійковій системі це - 00110101 00110111. При використанні в обчисленнях код цього числа буде отриманий за правилами перекладу в двійкову систему і одержимо - 00111001.

Здійснити порівняння сучасних браузерів

4. Таблиця ascii

ASCII (англ. Американський стандартний код для обміну інформацією) - американська стандартна кодувальна таблиця для друкованих символів і деяких спеціальних кодів. В американському варіанті англійської мови вимовляється [ескі], тоді як у Великобританії частіше вимовляється [аскі].

ASCII представляє собою кодування для представлення десяткових цифр, латинського та національного алфавітів, розділових знаків і керуючих символів. Спочатку розроблена як 7-бітна, з широким розповсюдженням 8-бітного байта ASCII стала сприйматися як половина 8-бітної. У комп'ютерах зазвичай використовують розширення ASCII з задіяною другою половиною байта (наприклад КОИ-8).

Накладення символів

 Завдяки символу BS (повернення на крок) на принтері можна друкувати один символ поверх іншого. В ASCII було передбачено додавання таким чином діакрітікі до букв, наприклад:

  • a BS ' → á

  • a BS ` → à

  • a BS ^ → â

  • o BS / → ø

  • c BS , → ç

  • n BS ~ → ñ

Примітка: у старих шрифтах апостроф ' малювався з нахилом вліво, а тильда ~ була зрушена вгору, так що вони якраз підходили на роль акута і тильди зверху.

Якщо на символ накладається той же символ, то виходить ефект жирного шрифту, а якщо на символ накладається підкреслення, то виходить підкреслений текст.

a BS a → a

a BS _ → a

Національні варіанти ASCII

Стандарт ISO 646 (ECMA-6) передбачає можливість розміщення національних символів на місці @ [\] ^ `{|} ~. На додаток до цього, на місці # може бути розміщений £, а на місці $ - ¤. Така система добре підходить для європейських мов, де потрібні лише кілька додаткових символів. Варіант ASCII без національних символів називається US-ASCII, або «International Reference Version».

Для деяких мов з нелатинською писемністю (арабська, грецька, російська) існували більш радикальні модифікації ASCII. Одним з варіантів була відмова від малих латинських літер - на їх місці розміщувалися національні символи (для російської та грецької - лише великими літерами). Інший варіант - перемикання між US-ASCII і національним варіантом «на льоту» за допомогою символів SO (Shift Out) і SI (Shift In) - в цьому випадку в національному варіанті можна повністю усунути латинські букви і зайняти весь простір під свої символи.

Згодом виявилося зручніше використовувати 8-бітове кодування, де нижню половину кодової таблиці (0-127) займають символи US-ASCII, а верхню (128 - 255) - додаткові символи, включаючи набір національних символів. Таким чином, верхня половина таблиці ASCII до повсюдного впровадження Юнікод у активно використовувалася для подання локалізованих символів, літер місцевої мови. Відсутність єдиного стандарту розміщення кириличних символів в таблиці ASCII додавало безліч проблем з кодуваннями. Інші мови з нелатинською писемністю теж страждали через наявність кількох різних кодувань.

В Юнікод і перші 128 символів теж збігаються з відповідними символами US-ASCII.

Розділи стандарту Юнікод

Стандарт Unicode складається з двох основних розділів: універсальний набір символів і сімейство кодувань. Універсальний набір символів задає однозначну відповідність символів кодам – елементам кодового простору, що представляють ненегативні цілі числа. Сімейство кодувань визначає машинне представлення послідовності кодів універсального набору символів.

 Стандарти наборів символів:

UCS-4 (англ. Universal Character Set) – 1 символ = 4 байти, всього можна закодувати 232 = 4 294 967 296 символів. Проте максимальна кількість Юнікод-символів на сьогодні - 220 + 216 = 1 114 112.

UCS-2 (англ. Universal Character Set) – 1 символ = 2 байти, всього можна закодувати 216 = 65 536 символів.

 

Стандарти кодувань:

UTF-32 (англ. Unicode Transformation Format – формат перетворення Юнікода) – один із способів кодування символів із Unicode у вигляді 32-бітових послідовностей. 1 символ = 32-біти.

UTF-16 – один із способів кодування символів із Unicode у вигляді 16-бітних послідовностей. Символи з кодами менше 0x10000 (216) представляються як є (одна 16-бітова послідовність), а символи з кодами 0x10000–0x10FFFE — у вигляді двох 16-бітових послідовностей (так звана «сурогатна» пара), перша з яких лежить в діапазоні 0xD800–0xDBFF, а друга — 0xDC00–0xDFFF. Легко бачити, що існує 210 * 210 = 220 таких комбінацій. А загальна кількість можливих символів 220 + 216 = 1 114 112. Слід зазначити, що за стандартом ніякі символи не можуть мати кодів власне з діапазону 0xD800-0xDFFF, так що розшифровка кодування завжди однозначна. Втім, в переважній більшості випадків текст в UTF-16 є просто послідовністю символів з UCS-2, оскільки символи Unicode після коду 0x10000 використовуються вкрай рідко.

UTF-16LE та UTF-16BE У потоці даних UTF-16 старший байт може записуватися або перед молодшим (UTF-16 Big Endian або UTF-16BE), або після молодшого (UTF-16 Little Endian або UTF-16LE). Іноді кодування Юнікода Big Endian (UTF-16BE) називають Юнікодом із зворотним порядком байтів. Аналогічно існує два варіанти 32-бітового кодування: UTF-32LE та UTF-32BE.

UTF-8 – поширене сьогодні кодування, що реалізовує представлення Юнікода, сумісне з 8-бітовим кодуванням тексту. Текст, що складається тільки з символів з номером менше 128, при записі в UTF-8 перетворюється на звичайний текст ASCII. І навпаки, в тексті UTF-8 будь-який байт із значенням менше 128 зображає символ ASCII з тим же кодом. Решта символів Юнікода зображається послідовностями завдовжки від 2 до 6 байтів (реально тільки до 4 байт, оскільки використання кодів більше 221 не планується), в яких перший байт завжди має вид 11xxxxxx, а інші - 10xxxxxx.

Простіше кажучи, у форматі UTF-8 символи латинського алфавіту, розділові знаки і керуючі символи ASCII, записуються кодами ASCII-кодами, а решта всіх символів кодується за допомогою октетів (послідовності довжиною 8 біт) із старшим бітом 1. В результаті, навіть якщо програма не розпізнає Юнікод, то латинські букви, арабські цифри і розділові знаки зображатимуться правильно.

Символи UTF-8 отримують з Unicode таким чином:

Unicode UTF-8

0x00000000 — 0x0000007F: 0xxxxxxx

0x00000080 — 0x000007FF: 110xxxxx 10xxxxxx

0x00000800 — 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx

0x00010000 — 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Також теоретично можливі, але не включені в стандарти:

Unicode UTF-8 

0x00200000 — 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

0x04000000 — 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]