Dzisiaj jest wtorek, 02 grudnia 2008 r. 337 dzien roku
Languages:ar | id | bg | ca | ceb | cs | da | de | et | en | es | eo | fr | he | hr | it | ko | lt | hu | nl | ja | no | pl | pt | ru | ro | sk | sl | sr | fi | sv | te | tr | uk | zh






REKLAMA
mp3

Юнікод

Матеріал з Вікіпедії — вільної енциклопедії.

Перейти до: навігація, пошук

Юніко́д, (англ. Unicode) — це промисловий стандарт розроблений, щоб зробити можливим для текстів і символів (графічних знаків) всіх писемних систем світу узгоджене представлення (репрезентацію) і обробку комп’ютерами. Удосконалений сумісно з стандартом Універсальний Набір Символів (Universal Character Set - UCS) і опублікований в формі книги Стандарт Юнікод, Юнікод складається з асортименту символів, методології кодування і комплекту (набору) стандартів кодування символів, комплекту кодових таблиць для посилань на зображення символів, списку властивостей символів таких, наприклад, як верхній і нижній регістр, комплект довідкових даних комп’ютерних файлів, правил нормалізації, декомпозиції, співставлення і зображення (рендерингу).

Стандарт запропонувала в 1991 році організація Консорціум Юнікоду (англ. Unicode Consortium), яка обєднує найбільші ІТ-компанії (корпорації). Консорціум Юнікоду — неприбуткова (некомерційна) організація, яка координує розвиток Юнікоду, має амбітну мету замінити в кінцевому підсумку існуючі системи кодування символів Юнікодом і його системою стандартів Формат Перетворень Юнікоду (UTF, Unicode Transformation Format), тому що багато існуючих систем кодування є обмеженими в розмірі й можливостях і несумісними з багатомовними середовищами. Успіхи Юнікоду в уніфікації наборів символів призвели до його розповсюдження і домінуючого використання в інтернаціоналізації і локалізації програмного забезпечення комп’ютерів. Стандарт був використаний в багатьох новітніх технологіях, включаючи XML, мову програмування Java і сучасні операційні системи.

Юнікод переступає старе обмеження кодування символів одним байтом. Замість того використовує 17 просторів, кожен з яких визначає 65,536 кодів і дає можливість описати максимум 1 114 112 (17 * 216) різних символів. Basic Multilingual Plane (BMP) — Основна Багатомовна Площина, містить майже всі символи, що Ви будете коли-небудь використовувати.

Юнікод має декілька реалізацій, але найпоширенішими є дві: UTF (Unicode Transformation Format) — Формат Перетворення Юнікоду та UCS (Universal Character Set) — Універсальна Таблиця Символів. Число після UTF визначає кількість біт виділених під один юніт, а число після UCS визначає кількість байт. Універсальний набір символів задає однозначну відповідність символів кодам — елементам кодового простору, тобто невід’ємним цілим числам. UTF-8 став найпоширенішим для інтернаціональних кодувань.

UTF-8 є системою кодування з змінною довжиною кодування символів, це означає що для кодування символів він використовує від 1 до 4 байт на символ. Так перший байт UTF-8 використовується для кодування ASCII, що дає повну сумісність з ASCII. Перекодування ASCII кодом UTF-8 для латинських символів дуже незначно збільшить розмір даних, бо використовується тільки перший байт. В східних мовах де мусять для кодування використовувати вищі байти це кодування збільшує розмір даних на 50 %.

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

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

Зміст

[ред.] Розділи стандарту Юнікод

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

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

UCS-4 (англ. Universal Character Set) – 1 символ = 4 байти, всього можна закодувати 232 символів. Проте максимальна кількість Юнікод-символів на сьогодні - 220 + 216 = 1 114 112. UCS-2 (англ. Universal Character Set) – 1 символ = 2 байти, всього можна закодувати 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-16ВE У потоці даних UTF-16 старший байт може записуватися або перед молодшим (UTF-16 Big Endian або UTF-16BE), або після молодшого (UTF-16 Little Endian або UTF-16LE). Іноді кодування Юнікода Big Endian (UTF-16BE) називають Юнікодом із зворотним порядком байтів. Аналогічно існує два варіанти 32-байтного кодування: UTF-32LE та UTF-32ВE.

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


[ред.] BOM

Для визначення формату представлення Юнікода в текстовому файлі використовується прийом, по якому на початку тексту записується символ U+FEFF (нерозривний пропуск з нульовою шириною), також іменований міткою порядку байтів (англ. Byte Order Mark, BOM). Цей спосіб дозволяє розрізняти UTF-16LE і UTF-16BE, оскільки символу U+FFFE не існує. Також він іноді застосовується для позначення формату UTF-8, хоча до цього формату і непридатне поняття порядку байтів. Файли, які дотримуються цього правила починаються з таких байтів:


UTF-8 EF BB BF

UTF-16BE FE FF

UTF-16LE FF FE


UTF-32BE 00 00 FE FF

UTF-32LE FF FE 00 00

[ред.] Кодовий простір

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

[ред.] Кодування та типи текстових даних мови С/С++

В мові С/С++ історично склалася така ситуація. Для роботи зі «звичайними» текстовими даними існує тип char. Для роботи з так званим «широким» текстом існує тип wchar_t. Особливості використання цих типів даних залежить від системи. А власне особливостями є кодування тексту в типах даних, та розмір одного символа. Для порівняння візьмемо дві системи:


Linux

1. char («звичайний» текст) Кодування – UTF-8 Розмір 1 символа – 1, 2, 3 або 4 байти sizeof(char) = 1

2. wchar_t («широкий» текст) Кодування – UTF-32 Розмір 1 символа – 4 байти sizeof(wchar_t) = 4

Windows

1. char («звичайний» текст) Кодування – кодові сторінки Розмір 1 символа – 1 байт sizeof(char) = 1

2. wchar_t («широкий» текст) Кодування – UTF-16 Розмір 1 символа – 2 або 4 байти sizeof(wchar_t) = 2

[ред.] Висновки

Характерна особливість набору символів (UCS) – символи завжди фіксованої довжини: UCS-2 – 1 символ = 2 байти UCS-4 – 1 символ = 4 байти

Характерна особливість кодування (UTF) – символи НЕ завжди фіксованої довжини: UTF-32 – єдине кодування з фіксованою довжиною символів, 1 символ = 32 біти = 4 байти, тому можна сказати, що код символа в UCS-4 дорівнює коду символа в UTF-32. UTF-16 – коди символів < 216 однозначно відповідають кодам символів з набору UCS-2. Коди решти символів (символи з кодом >= 216) є однозначними тільки для UTF-16. UTF-8 – коди символів < 128 однозначно відповідають кодам символів верхньої частини ASCII таблиці. Коди решти символів (символи з кодом >= 128) є однозначними тільки для UTF-8.

Твердження «1 байт = 1 символ» є застарілим і в переважній більшості практичних випадків є хибним. Довжина символа НЕ є фіксованою (виняток складає кодування UTF-32 та ASCII таблиця). Юнікод у програмах – добра платформа для підтримки багатомовності.


[ред.] Посилання


Polska, Dolar, Forex


Wikipedia jest zarejestrowanym znakiem towarowym Wikimedia Foundation
Wszystkie materiay pochodz z Wikipedii, obite s licencj GNU Free Documentation License