- •Тема 1: Поняття web-технологій.
- •2. Принципи взаємодії броузера та web-сервера
- •3. Кодування тексту
- •4. Таблиця ascii
- •5. Однобайтне кодування (koi8, iso8859-5, cp1251, ibm866, mac-cyr)
- •Тема 2. Основи стандарту html та ієрархічні стилеві специфікації css. План
- •Стандарт sgml
- •Історія та версії html
- •Синтаксис та текстова розмітка
- •Посилання та прив’язки
- •Тема 3. Мета дані та ієрархічні стилеві специфікації. План
- •Національні особливості
- •Середовище і доступність
- •Мета дані та пошук
- •Основні принципи css
- •Можливості css
- •Модульний html
- •Тема4. Стандарт мови розмітки xml План
- •Синтаксис.
- •Рівні відповідності
- •Конверсія
- •Розширення мови посилання xml
- •Розширена мова стильових специфікацій xsl
- •Xsl складається з трьох частин:
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
