Що таке юнікод? – Ч. 2

Приклади Оригінальний текстNFDNFCNFKDNFKCFrancais (Fran \ xe7ais)Franc\ U0327aisFran \ xe7aisFranc \ u0327aisFran \ xe7aisА, Е, Й (\ u0410, \ u0401, \ u0419) \ u0410, \ u0415 \ u0308, \ u0418 \ u0306 \ u0410, \ u0401, \ u0419 \ u0410, \ u0415 \ u0308, \ u0418 \ u0306 \ u0410, \ u0401, \ u0419? (\ U304c) \ u304b \ u3099 \ u304c \ u304b \ u3099 \ u304cHenry IVHenry IVHenry IVHenry IVHenry IVHenry ? (Henry \ U2163)Henry \ U2163Henry \ U2163Henry IVHenry IV

Двонаправлене лист

Стандарт Юнікод підтримує писемності мов як з напрямком написання зліва направо (left-to-right, LTR), Так і з написанням справа наліво (right-to-left, RTL) – Наприклад, арабське і єврейське лист. В обох випадках символи зберігаються в «природному» порядку; їх відображення з урахуванням потрібного напрямку письма забезпечується додатком.

Крім того, Юнікод підтримує комбіновані тексти, що поєднують фрагменти з різним напрямком письма. Дана можливість називається двунаправленность (bidirectional text, BiDi). Деякі спрощені обробники тексту (наприклад, у стільникових телефонах) можуть підтримувати Юнікод, але не мати підтримки двонаправлений. Всі символи Юнікоду поділені на декілька категорій: пишуться зліва направо, пишуться справа наліво, і пишуться в будь-якому напрямку. Символи останньої категорії (в основному це знаки пунктуації) при відображенні приймають напрямок оточуючого їх тексту.

Представлені символи

Юнікод включає практично всі сучасні писемності, в тому числі:

арабську, вірменську, бенгальську, бірманську, грецьку, грузинську, деванагарі, іврит, кирилицю, коптську, кхмерскую, латинську, тамільською, хангиль, хань (Китай, Японія, Корея), черокі, ефіопську, японську (катакана, хірагана, кандзі) і інші.

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

У Юникоде представлений широкий набір математичних і музичних символів, а також піктограм.

ISO / IEC 10646

Консорціум Юнікоду працює в тісному зв'язку з робочою групою ISO/IEC/JTC1/SC2/WG2, яка займається розробкою міжнародного стандарту 10646 (ISO / IEC 10646). Між стандартом Юнікоду та ISO / IEC 10646 встановлена синхронізація, хоча кожен стандарт використовує свою термінологію і систему документації.

Співпраця Консорціуму Юнікоду із Міжнародною організацією по стандартизації (англ. International Organization for Standardization, ISO) почалося в 1991 році. У 1993 році ISO випустила стандарт DIS 10646.1. Для синхронізації з ним, Консорціум затвердив стандарт Юнікоду версії 1.1, в який були внесені додаткові символи з DIS 10646.1. У результаті, значення закодованих символів в Unicode 1.1 і DIS 10646.1 повністю співпали.

Надалі співпраця двох організацій продовжилося. У 2000 році стандарт Unicode 3.0 був синхронізований з ISO / IEC 10646-1:2000. Майбутня третя версія ISO / IEC 10646 буде синхронізована з Unicode 4.0. Можливо, ці специфікації навіть будуть опубліковані як єдиний стандарт.

Аналогічно форматів UTF-16 і UTF-32 в стандарті Юнікод, стандарт ISO / IEC 10646 також має дві основні форми кодування символів: UCS-2 (2 байти на символ, аналогічно UTF-16) і UCS-4 (4 байти на символ, аналогічно UTF-32). UCS значить універсальний многооктетний (Мультибайтних) кодований набір символів (Англ. Universal Multiple-Octet Coded Character Set). UCS-2 можна вважати підмножиною UTF-16 (UTF-16 без сурогатних пар), а UCS-4 є синонімом для UTF-32.

Способи представлення

Юнікод має декілька форм представлення (англ. Unicode Transformation Format, UTF): UTF-8, UTF-16 (UTF-16BE, UTF-16LE) і UTF-32 (UTF-32BE, UTF-32LE). Була розроблена також форма представлення UTF-7 для передачі по семібітним каналах, але через несумісність з ASCII вона не набула поширення і не включена в стандарт. 1 квітня 2005 було запропоновано дві жартівливі форми подання: UTF-9 і UTF-18 (RFC 4042).

В Microsoft Windows NT і заснованих на ній системах Windows 2000 і Windows XP в основному використовується форма UTF-16LE. В UNIX-подібних операційних системах GNU / Linux, BSD і Mac OS X прийнята форма UTF-8 для файлів і UTF-32 або UTF-8 для обробки символів в оперативній пам'яті.

UTF-8

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

Формат UTF-8 був винайдений 2 вересня 1992 Кеном Томпсоном і Робом Пайком і реалізований в Plan 9 [1]. Зараз стандарт UTF-8 офіційно закріплений в документах RFC 3629 і ISO / IEC 10646 Annex D.

Символи UTF-8 виходять з Unicode наступним чином:

Unicode UTF-8 0x00000000 – 0x0000007F: 0xxxxxxx 0x00000080 – 0x000007FF: 110xxxxx 10xxxxxx 0x00000800 – 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx 0x00010000 – 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

(Теоретично можливі, але не включені в стандарт також icon smile Що таке юнікод?    Ч. 2 0x00200000 – 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x04000000 – 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Зверніть увагу на те, що хоча UTF-8 дозволяє вказати один і той же символ декількома способами, тільки найбільш короткий з них правильний. Решта форми повинні відхилятися з міркувань безпеки.

Порядок байтів

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

Для визначення формату представлення Юнікоду в текстовому файлі використовується прийом, по якому на початку тексту записується символ 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-16LE та UTF-32LE, оскільки символ U +0000 допускається Юнікод (хоча реальні тексти рідко починаються з нього).

Реалізації

Більшість сучасних операційних систем в тій чи іншій мірі забезпечують підтримку Юнікоду.

В операційних системах сімейства Windows NT для внутрішнього представлення імен файлів та інших системних рядків використовується двухбайтовая кодування UTF-16LE. Системні виклики, які приймають строкові параметри, існують в однобайтное і двухбайтного варіантах. Докладніше див в статті Юнікод в операційних системах Microsoft.

UNIX-образні операційні системи, у тому числі, GNU / Linux, BSD, Mac OS X, використовують для представлення Юнікоду кодування UTF-8. Більшість програм можуть працювати з UTF-8 як з традиційними однобайтное кодуваннями, не звертаючи уваги на те, що символ представляється як кілька послідовних байт. Для роботи з окремими символами рядки зазвичай перекодуються в UCS-4, так що кожному символу відповідає машинне слово.

Однією з перших успішних комерційних реалізацій Юнікоду стала середу програмування Java. У ній принципово відмовилися від 8-бітного представлення символів на користь 16-бітного. Зараз більшість мов програмування підтримують рядки Юнікоду, хоча їх подання може розрізнятися в залежності від реалізації.

Методи введення

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

Microsoft Windows

Починаючи з Windows 2000, службова програма «Таблиця символів» дозволяє вивести на екран таблицю всіх символів від U +0000 до U + FFFF, підтримуваних конкретною шрифтом. Ця програма дозволяє виділяти окремі символи і копіювати їх у буфер обміну. Таблиця символів, аналогічна за функціональністю цій програмі, включена і в деякі прикладні програми, наприклад, Microsoft Word.

Більш універсальний спосіб введення символу, код якого відомий – затиснути Alt, натиснути клавішу «плюс» в додатковому блоці клавіатури, і потім набрати шістнадцятковий код потрібного символу. Наприклад, натиснення Alt + Plus + f1 вставить букву «ñ». Цей спосіб, проте, працює не у всіх елементах керування, що дозволяють вводити текст.

У деяких програмах, наприклад, WordPad, Word і Opera 7.5, працює ще один спосіб введення символів по шістнадцятковому коду: потрібно набрати цей код, і натиснути Alt + X. Код буде замінений на відповідний символ. Працює і зворотне перетворення: якщо виділити символ і натиснути Alt + X, то цей символ буде замінений на його шістнадцятковий код.

Macintosh

В Mac OS 8.5 і більш пізніх версіях підтримується метод введення, званий «Unicode Hex Input». При затиснутою клавіші Option потрібно набрати чотиризначний шістнадцятковий код потрібного символу. Цей метод дозволяє вводити символи з кодами, більшими U + FFFF, використовуючи пари сурогатів; такі пари операційною системою будуть автоматично замінені на одиночні символи. Цей метод введення перед використанням потрібно активізувати у відповідному розділі системних налаштувань, і потім вибрати як поточний метод введення в меню клавіатури.

Починаючи з Mac OS X 10.2, існує також додаток «Character Palette», Що дозволяє вибирати символи з таблиці, в якій можна виділяти символи певного блоку або символи, підтримувані конкретним шрифтом.

GNU / Linux

В GNOME також є утиліта «Таблиця символів», що дозволяє відображати символи певного блоку або системи письма, і надає можливість пошуку за назвою або опису символу. Коли код потрібного символу відомий, його можна ввести у відповідності зі стандартом ISO 14755: при затиснутих клавішах Ctrl і Shift ввести шістнадцятковий код (у GNOME версії 2.15 або пізнішої введення коду потрібно випередити натисканням клавіші «U»). Вводиться шістнадцятковий код може мати до 32 біт в довжину, дозволяючи вводити будь-які символи Юнікоду без використання сурогатних пар.

Всі додатки X Window, включаючи GNOME та KDE, підтримують введення за допомогою клавіші Compose. Для клавіатур, на яких немає окремої клавіші Compose, для цієї мети можна призначити будь-яку клавішу – наприклад, CapsLock.

Консоль GNU / Linux також допускає введення символу Юнікоду за його кодом – для цього десятковий код символу потрібно ввести цифрами розширеного блоку клавіатури при затиснутою клавіші Alt. Можна вводити символи і по їх шістнадцятковому коду: для цього потрібно затиснути клавішу AltGr, і для введення цифр AF використовувати клавіші розширеного блоку клавіатури від NumLock до Enter (За годинниковою стрілкою). Підтримується також і введення відповідно до ISO 14755. Для того, щоб перераховані способи могли працювати, потрібно включити юнікодний режим консолі викликом unicode_start (1) і вибрати відповідний шрифт викликом setfont (8).

Mozilla Firefox для Linux підтримує введення символів по ISO 14755.

Проблеми Юнікоду

Як будь-яка винайдена людиною система, Юнікод не вільний від недоліків (хоча, в основному, вони пов'язані з можливостями обробників тексту, а не безпосередньо з принципом кодування).

  • Деякі системи письма все ще не представлені належним чином в Юникоде. Наприклад, відсутні деякі букви традиційної писемності церковнослов'янської мови. Ця писемність містить багато додаткових графічних елементів (такі, як титла і виносні літери). Зображення «довгих» надрядкових символів, що простягаються над декількома буквами, доки не реалізовано.
  • Тексти китайською, корейською та японською мовою мають традиційне написання зверху вниз, починаючи з правого верхнього кута. Перемикання горизонтального і вертикального написання для цих мов не передбачено в Юникоде – це повинно здійснюватися засобами мов розмітки або внутрішніми механізмами текстових процесорів.
  • Первісна версія Юнікоду припускала наявність великої кількості готових символів, в подальшому було віддано перевагу поєднанню букв з діакритичними модифікуючими знаками (Combining diacritics). Наприклад, російські літери Е (U +0401) і Й (U +0419) існують у вигляді монолітних символів, хоча можуть бути представлені і набором базового символу з подальшим акцентованого знаком, тобто в складовою формі (Decomposed): Е +? (U +0415 U +0308), І +? (U +0418 U +0306). У той же час безліч символів з мов з алфавітами на основі кирилиці не мають монолітних форм.
  • Юнікод передбачає можливість різних накреслень одного і того ж символу в залежності від мови. Так, китайські ієрогліфи можуть мати різні накреслення в китайській, японській (кандзі) і корейською (ханчча), Але при цьому в Юникоде позначатися одним і тим же символом (так звана CJK-уніфікація), хоча спрощені і повні ієрогліфи все ж мають різні коди. Часто виникають накладки, коли, наприклад, японський текст виглядає «по-китайськи». Аналогічно, російська і сербська мови використовують різний накреслення курсивних букв п і т (у сербському вони виглядають як і і ш). Тому потрібно стежити, щоб текст завжди був правильно помічений як відноситься до того чи іншої мови.
  • Файли з текстом в Юникоде займають більше місця в пам'яті, так як один символ кодується не одним байтом, як у різних національних кодуваннях, а послідовністю байтів (виняток становить UTF-8 для мов, алфавіт яких укладається в ASCII). Однак зі збільшенням потужності комп'ютерних систем і здешевленням пам'яті і дискового простору ця проблема стає все менш істотною.
  • Хоча підтримка Юнікоду реалізована в найбільш поширених операційних системах, не все прикладне програмне забезпечення підтримує коректну роботу з ним. Зокрема, не завжди обробляються мітки BOM і погано підтримуються діакритичні символи. Проблема є тимчасовою і є наслідок порівняльної новизни стандартів Юнікоду (у порівнянні з однобайтові національними кодуваннями).

«Юнікод» або «Унікод»?

«Unicode»- Одночасно і ім'я власне (або частина імені, наприклад Unicode Consortium), І ім'я загальне, що відбувається з англійської мови.

На перший погляд краще використовувати написання «Унікод». У російській мові вже є морфеми «уні-» (слова з латинським елементом «uni-»Традиційно переводилися і писалися через« уні-»: універсальний, уніполярний, уніфікація, уніформа) і« код ». Навпаки, торгові марки, запозичені з англійської мови, звичайно передаються за допомогою практичної транскрипції, в якій деетімологізірованное поєднання букв «uni-»Записується у вигляді« юні-»(« Юнілевер »,« Юнекс »і т. п.), тобто точно так само, як у випадку з побуквенно скороченнями, начебто UNICEF «United Nations International Children's Emergency Fund»- ЮНІСЕФ.

В якості перекладу імені загального, слово «Унікод» можна було б розглядати як складноскорочене – наприклад, від виразу «універсальна кодування». Однак це призвело б до появи двох слів із схожим звучанням і коливанню значень. Тому при локалізації операційної системи Windows 95 компанія «Майкрософт» ввела написання російського слова «Юнікод» за формою імені власного.

Написання «Юнікод» вже твердо увійшло в російськомовні тексти. Згідно «Яндексу», частота використання цього слова в 3,5 рази перевищує «Унікод». У Вікіпедії використовується більш поширений варіант.

На сайті консорціуму є спеціальна сторінка, де розглядаються проблеми передачі слова «Unicode»В різних мовах і системах письма. Для російської кирилиці зазначений варіант «Юнікод».

Джерело: Вікіпедія

Посилання:

  • Офіційний сайт Консорціуму Юнікоду (англ.)
  • Вікіпедія: Проект: Внесення символів алфавітів народів Росії в Юнікод
  • Що таке Unicode?
  • Версія 5.0.0 стандарту Юнікод (англ.)
  • Зв'язок Юнікоду та ISO / IEC 10646 (файл PDF) (англ.)
  • Кирилиця в Юникоде (файл PDF) (англ.)
  • DecodeUnicode – Unicode WIKI (англ.), 50 000 зображень символів
  • Включення підтримки додаткових символів Юнікоду в Windows (англ.)
  • Символи, представлені в Юникоде
  • Кирилиця в Юникоде (Вікіпедія)

Category: Інтернет

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

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

Leave a Reply