Що таке юнікод?

Юнікод, або Унікод (англ. Unicode) – Стандарт кодування символів, що дозволяє представити знаки практично всіх письмових мов.

Стандарт запропонований в 1991 році некомерційною організацією «Консорціум Юнікоду» (англ. Unicode Consortium), Яка об'єднує найбільші IT-корпорації. Застосування цього стандарту дозволяє закодувати дуже велику кількість символів з різних писемностей: у документах Unicode можуть сусідити китайські ієрогліфи, математичні символи, букви грецького алфавіту, латиниці і кирилиці, при цьому стають непотрібними кодові сторінки.

Стандарт складається з двох основних розділів: універсальний набір символів (UCS, Universal Character Set) І сімейство кодувань (UTF, Unicode Transformation Format). Універсальний набір символів задає однозначну відповідність символів кодам – елементам кодового простору, що представляє невід'ємні цілі числа. Сімейство кодувань визначає машинне представлення послідовності кодів UCS.

Коди в стандарті Unicode розділені на кілька областей. Область з кодами від U +0000 до U +007 F містить символи набору ASCII з відповідними кодами. Далі розташовані області знаків різних писемностей, знаки пунктуації і технічні символи. Частина кодів зарезервована для використання в майбутньому. Під символи кирилиці виділені коди від U +0400 до U +052 F

Передумови створення і розвиток Юнікоду

До кінця 1980-х років стандартом стали 8-бітові символи, при цьому існувало безліч різних 8-бітних кодувань і постійно з'являлися все нові. Це пояснювалося як постійним розширенням кола підтримуваних мов, так і прагненням створити систему кодування, частково сумісну з якоюсь іншою (характерний приклад – поява альтернативної кодування для російської мови, зумовлене експлуатацією західних програм, створених для кодування CP437). У результаті з'явилася необхідність вирішення декількох завдань:

  • Проблема «крокозябров» (показу документів в неправильній кодуванні): її можна було вирішити або послідовним впровадженням методів вказівки використовуваного кодування, або впровадженням єдиної для всіх кодування.
  • Проблема обмеженості набору символів: її можна було вирішити або перемиканням шрифтів всередині документа, або впровадженням «широкої» кодування. Перемикання шрифтів здавна практикувалося в текстових процесорах, причому часто використовувалися шрифти з нестандартною кодуванням, т. зв. «dingbat fonts»- У підсумку при спробі перенести документ в іншу систему всі нестандартні символи перетворювалося в крокозябри.
  • Проблема перетворення одного кодування в іншу: її можна було вирішити або складанням таблиць перекодування для кожної пари кодувань, або використанням проміжного перетворення в третю кодування, що включає всі символи всіх кодувань.
  • Проблема дублювання шрифтів: традиційно для кожного кодування робився свій шрифт, навіть якщо ці кодування частково (або повністю) збігалися по набору символів: цю проблему можна було вирішити, роблячи «великі» шрифти, з яких потім вибираються потрібні для даної кодування символи – проте це вимагає створення єдиного реєстру символів, щоб визначати, чому що відповідає.
  • Було визнано за необхідне створення єдиної «широкої» кодування. Кодування із змінною довжиною символу, що широко використовуються в Східній Азії, були визнані занадто складними у використанні, тому було вирішено використовувати символи фіксованої ширини. Використання 32-бітових символів здавалося занадто марнотратним, тому було вирішено використовувати 16-бітні.

    Таким чином, перша версія Юнікоду являла собою систему кодування з фіксованим розміром символу в 16 біт, тобто загальне число кодів було 216 (65 536). Звідси походить практика позначення символів чотирма шістнадцятковим цифрами (наприклад, U +0410). При цьому в Юникоде планувалося кодувати не всі існуючі символи, а тільки ті, які необхідні в повсякденному побуті. Рідко використовувані символи повинні були розміщуватися в «області символів для приватного використання» (Private Use Area), Яка спочатку займала коди U + D800 … U + F8FF. Щоб використовувати Юнікод також і в якості проміжної ланки при перетворенні різних кодувань один в одного, в нього включили всі символи, представлені у всіх більш-менш відомих кодуваннях.

    Надалі, проте, було прийнято рішення кодувати всі символи і у зв'язку з цим значно розширити кодову область. Одночасно з цим, коди символів стали розглядатися не як 16-бітні значення, а як абстрактні числа, які в комп'ютері можуть представлятися безліччю різних способів.

    Оскільки в ряді комп'ютерних систем (наприклад, Windows NT) Вже були реалізовані 16-бітові символи, було вирішено все найбільш важливе кодувати тільки в межах перших 65 536 позицій (так звана англ. Basic Multilingual Plane, BMP). Інший простір використовується для «Додаткових символів» (англ. Supplementary Characters): Систем письма вимерлих мов або дуже рідко використовуваних китайських ієрогліфів, математичних і музичних символів.

    Для сумісності зі старими 16-бітними системами була винайдена система UTF-16, де перші 65 536 позицій відображаються безпосередньо як 16-бітові числа, а інші видаються у вигляді «сурогатних пар» (перший елемент пари з області U + D800 … U + DBFF , другий елемент пари з області U + DC00 … DFFF). Для сурогатних пар була використана частина кодового простору, раніше відведеного для «символів для приватного використання».

    Оскільки в UTF-16 можна відобразити тільки 220 +216 (1 114 112) символів, то це і було обрано в якості остаточної величини кодового простору Юнікоду.

    Хоча кодова область Юнікоду була розширена за межі 216 вже у версії 2.0, перші символи в «верхній» області були розміщені лише у версії 4.0.

    Версії Юнікоду

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

    • 1.1 (відповідає стандарту ISO / IEC 10646-1:1993),
    • 2.0, 2.1 (той же стандарт ISO / IEC 10646-1:1993 плюс доповнення: «Amendments»З 1-го по 7-е і«Technical Corrigenda»1 і 2),
    • 3.0 (стандарт ISO / IEC 10646-1:2000).
    • 3.2 (стандарт 2002 року)
    • 4.0 (стандарт 2003)
    • 4.01 (стандарт 2004)
    • 4.1 (стандарт 2005)
    • 5.0 (стандарт 2006)

    Кодове простір

    Хоча форми запису UTF-8 і UTF-32 дозволяють кодувати до 231 (2 147 483 648) кодових позицій, було прийнято рішення використовувати лише 220 +216 (1 114 112) для сумісності з UTF-16. Втім, навіть і цього більш ніж достатньо – сьогодні (у версії 5.0) використовується трохи більше 99 000 кодових позицій.

    Кодове простір розбите на 17 площин по 216 (65536) символів. Нульова площину називається базовою, в ній розташовані символи найбільш уживаних писемностей. Перша площина використовується, в основному, для історичних писемностей. Площині 16 і 17 виділені для приватного вжитку.

    Для позначення символів Unicode використовується запис виду «U + xxxx»(Для кодів 0 … FFFF) або«U + xxxxx»(Для кодів 10000 … FFFFF) або«U + xxxxxx»(Для кодів 100000 … 10FFFF), де xxx – шістнадцяткові цифри. Наприклад, символ «я» (U +044 F) Має код 044F16 = 110310.

    Система кодування

    Універсальна система кодування (Юнікод) являє собою набір графічних символів і спосіб їх кодування для комп'ютерної обробки текстових даних.

    Графічні символи – це символи, що мають видиме зображення. Графічним символам протиставляються керуючі символи і символи форматування.

    Графічні символи включають в себе наступні групи:

    • літери, що містяться хоча б в одному з обслуговуваних алфавітів;
    • цифри;
    • знаки пунктуації;
    • спеціальні знаки (математичні, технічні, ідеограми та ін);
    • роздільники.

    Юнікод – це система для лінійного представлення тексту. Символи, що мають додаткові над-або підрядкові елементи, можуть бути представлені у вигляді побудованої за певними правилами послідовності кодів (складовою варіант, composite character) Або у вигляді єдиного символу (монолітний варіант, precomposed character).

    Модифікуючі символи

    Графічні символи в Юникоде підрозділяються на протяжні і непротяжних (бесшірінние). Непротяжних символи при відображенні не займають місця в рядку. До них відносяться, зокрема, знаки наголосу і інші діакритичні знаки. Як протяжні, так і непротяжних символи мають власні коди. Протяжні символи інакше називаються базовими (base characters), А непротяжних – модифікуючими (Combining characters); Причому останні не можуть зустрічатися самостійно. Наприклад, символ «á» може бути представлений як послідовність базового символу «a» (U +0061) і модифікуючого символу «?» (U +0301) або як монолітний символ «á» (U +00 C1).

    Особливий тип модифікуючих символів – селектори варіанти накреслення (variation selectors). Вони діють тільки на ті символи, для яких такі варіанти визначені. У версії 5.0 варіанти накреслення визначені для ряду математичних символів, для символів традиційного монгольського алфавіту і для символів листи Phags-Pa.

    Форми нормалізації

    Оскільки одні й ті ж символи можна представити різними кодами, що іноді утрудняє обробку, існують процеси нормалізації, призначені для приведення тексту до певного стандартному виду.

    У стандарті Юнікоду визначено 4 форми нормалізації тексту:

    • Форма нормалізації D (NFD) – канонічна декомпозиція. У процесі приведення тексту у цю форму всі складові символи рекурсивно замінюються на кілька складових, у відповідності з таблицями декомпозиції.
    • Форма нормалізації C (NFC) – канонічна декомпозиція з подальшою канонічної композицією. Спочатку текст наводиться до форми D, після чого виконується канонічна композиція – текст обробляється від початку до кінця і виконуються наступні правила:
      • Символ S є початковим, якщо він має нульовий клас модифікації в базі символів Юнікоду.
      • У будь-якій послідовності символів, що стартує з початкового символу S символ C блокується від S якщо і тільки якщо між S і C є який-небудь символ B, який або є початковим, або має однаковий або більший клас модифікації, ніж C. Це правило поширюється тільки на рядки минулі канонічну декомпозицію.
      • Первинним композитом вважається символ, у якого є канонічна декомпозиція в базі символів Юнікоду (або канонічна декомпозиція для хангиль і він не входить в список виключень.
      • Символ X може бути первинно суміщений з символом Y якщо і тільки якщо існує первинний композит Z, канонічно еквівалентний послідовності <X, Y>.
      • Якщо черговий символ C не блокується останнім зустрінутим початковим базовим символом L, і він може бути успішно первинно суміщений з ним, то L замінюється на композит LC, а C видаляється.
    • Форма нормалізації KD (NFKD) – Сумісна декомпозиція. При приведенні в цю форму всі складові символи замінюються використовуючи як канонічні карти декомпозиції Юнікоду, так і сумісні картки декомпозиції, після чого результат ставиться в канонічному порядку.
    • Форма нормалізації KC (NFKC) – Сумісна декомпозиція з подальшою канонічної композицією.

    Терміни «композиція» та «декомпозиція» розуміють під собою відповідно з'єднання або розкладання символів на складові частини.


    Category: Інтернет

    Comments (Прокоментуй!)

    There are no comments yet. Why not be the first to speak your mind.

    Leave a Reply