Що таке Unicode: повний посібник, використання та кодування

Останнє оновлення: 20 серпня 2025
Автор: TecnoDigital
  • Юнікод призначає кожному символу унікальну кодову точку та синхронізує його репертуар із ISO/IEC 10646.
  • UTF-8, UTF-16 та UTF-32 кодують одні й ті ж символи та дозволяють перетворення без втрат.
  • Властивості нормалізації, Bidi та UCD забезпечують послідовне порівняння, упорядкування та рендеринг.
  • Використання Unicode (бажано UTF-8 в Інтернеті) запобігає пошкодженню та сприяє інтернаціоналізації.

Загальна ілюстрація про Юнікод

Юнікод — це загальноприйнята мова, якою комп’ютери розмовляють під час обробки тексту : він призначає унікальний номер кожному символу та символу майже з будь-якої системи письма, щоб його можна було безперешкодно зберігати, обробляти та поширювати між платформами та країнами.

Цей стандарт виник для подолання обмежень старих наборів символів ( набір ASCII , кодові сторінки, EBCDIC тощо), які не відповідали вимогам або були несумісні один з одним, і сьогодні він синхронізований з ISO/IEC 10646, підтримує алгоритми (такі як двонаправлений) та визначає властивості та правила нормалізації, щоб все працювало узгоджено.

Що таке Юнікод і чому він такий важливий?

Юнікод — це універсальний і постійно розвивається стандарт кодування символів , який описує кожен символ за допомогою назви, кодової точки та набору властивостей (шрифт, категорія, напрямок, регістр тощо). Технічний комітет Юнікоду (UTC) у складі Консорціуму Юнікоду забезпечує його синхронізацію зі стандартом ISO/IEC 10646.

Його метою є універсальність, одноманітність та унікальність : широкий репертуар, який дозволяє однозначний обмін багатомовним текстом з чіткими та відтворюваними правилами. Завдяки цьому сучасні технології (операційні системи, браузери, XML, Java, бази даних) можуть поєднувати латинську та арабську альтернативи, ідеограми CJK, емодзі та технічні чи музичні символи в одному документі.

Символи, гліфи та кодові точки

У Юнікоді символ — це абстрактна одиниця інформації, а кодова точка — її числовий ідентифікатор . Гліф — це візуальна форма (те, що ви бачите на екрані), яка залежить від шрифту . Один символ може мати кілька гліфів, а іноді гліф представляє більше одного символу.

Звичайне позначення кодової точки — U+XXXX у шістнадцятковій системі числення . Ілюстративні приклади з проаналізованого матеріалу: мала літера «l» — це U+006C, попередньо складена мала літера «ü» — U+00FC, «é» — U+00E9, а грецька бета: велика літера — U+0392, а мала — U+03B2 (у деяких текстах «β» цитується разом з U+0392, але цей код відповідає великій літері «Β»).

Кодовий простір Unicode має 1 114 112 можливих позицій (до U+10FFFF) , організованих для охоплення та класифікації всіх систем письма та символів, з десятками тисяч ефективних та зростаючих призначень у кожній версії.

Плани, площі та блоки

Юнікод поділяє свій символьний простір на 17 площин, кожна з яких містить до 65 536 кодових точок . Така організація дозволяє легко групувати пов'язані шрифти та символи та швидко знаходити потрібну інформацію.

Найбільш релевантні площини : Базова багатомовна площина (BMP, площина 0) об'єднує майже всі сучасні алфавіти та багато символів; Додаткова багатомовна площина (SMP, площина 1) зберігає історичні писемності та технічні символи (наприклад, музичні та математичні); Додаткова ідеографічна площина (SIP, площина 2) розширює ідеограми китайсько-японської ієрогліфів; площина 14 (SSP) містить спеціальні мітки; а площини 15 та 16 призначені для приватного використання.

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

  15 переваг дистанційної роботи для вашої роботи та особистого добробуту

Ідеограми CJK і проект Unihan

Східноазійські (ханьські) ідеограми уніфіковані в Unicode зі стилістичними варіаціями за регіонами , але всі вони посилаються на один і той самий абстрактний символ. Їх управлінням займається Група ідеологічних доповідачів (IRG), група ISO/IEC JTC1/SC2/WG2 до складу якої входять представники Китаю, Японії, Кореї, В'єтнаму, Гонконгу, Макао, Сінгапуру, США та інших країн.

База даних Unihan об'єднує допоміжну інформацію (читання, значення, еквівалентності), необхідну для роботи з цими ідеограмами різними мовами та історичними чи корпоративними стандартами.

Основні блоки та розширення CJK :

  • Уніфіковані ідеографи CJK (BMP, U+4E00–U+9FFF)20.992 XNUMX часто вживаних символів.
  • Розширення A (BMP, U+3400–U+4DBF): 6.592 менш часті ідеограми.
  • Розширення B–H: у SMP/SIP/TIP вони додаються на десятки тисяч більше (B: U+20000–U+2A6DF, 42.720 2; C: U+700A2–U+73B4.154F, 2 740; D: U+2B81–U+222B2F, 820; E: U+2B5.762–U+2CEAF, 0 2; F: U+7.473CEB30000–U+3134EBEF, 4.939 31350; G: U+323–U+4.192F, XNUMX XNUMX;
  • Інші пов'язані блоки CJK: Кансійські радикали (U+2F00–U+2FDF), символи та пунктуація китайсько-японського ієрогліфа (U+3000–U+303F), сумісність та формати сумісності, доповнення до ідеограм сумісності тощо.

Unicode передбачає, що включення ідеограм не матиме абсолютного кінця, і розглядає такі механізми, як послідовності ідеографічного опису, для представлення некодованих символів шляхом розбиття їх на існуючі компоненти (з застереженнями: без канонічного розкладання або гарантій в таких операціях, як пошук або впорядкування).

Форми кодування: UTF-8, UTF-16 та UTF-32

Юнікод визначає форми перетворення (UTF), які перетворюють кодові точки в одиниці пам'яті, щоб програмне забезпечення могло ефективно обробляти текст відповідно до його контексту.

UTF-8 — це формат кодування змінної довжини, орієнтований на байти, сумісний з ASCII в діапазоні U+0000–U+007F в одному байті. Поточний стандарт використовує від 1 до 4 байтів на символ; у деяких старіших текстах згадується від 1 до 6, але в сучасному Unicode це від 1 до 4. Це домінуючий формат в Інтернеті.

UTF-16 використовує 16-бітні одиниці

(одна або дві одиниці коду на символ) : більшість символів BMP вміщуються в одну одиницю; додаткові символи використовують сурогатні пари в діапазоні U+D800–U+DFFF.

UTF-32 має фіксовану довжину: 4 байти на символ, простий, але займає багато місця; корисний, коли важлива пряма індексація символів, а пам'ять не є проблемою.

Як розподіляються біти в UTF-8

Формат UTF-8 розподіляє біти кодової точки на послідовності від 1 до 4 байтів з розпізнаваними заголовками, що дозволяє уникнути неоднозначностей та полегшує виявлення меж символів.

Діапазон Юнікоду Бітовий шаблон байтів
U+0000..U+007F 0хххххх 1
U+0080..U+07FF 110ррррр 10xxxxxx 2
U+0800..U+FFFF 1110zzzz 10yyyyyyy 10xxxxxx 3
U+010000..U+10FFFF 11110uuu 10uuuzzzz 10yyyyyyy 10xxxxxx 4

Ключовою перевагою UTF-8 є те, що вона дозволяє уникнути проблем з порядком байтів (endianness) та забезпечує високоефективну обробку текстових потоків, крім того, вона зворотно сумісна з ASCII.

Схеми кодування, порядок байтів та BOM

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

  • UTF-8: порядок байтів не застосовується. Його можна переносити Позначення порядку байтів (BOM) як підказку, хоча за замовчуванням це не є обов'язковим або рекомендованим.
  • UTF-16Варіанти BE/LE (big/little-endian) та додаткова BOM (якщо відсутня та не визначена протоколом, передбачається big-endian).
  • UTF-32Варіанти BE/LE з аналогічними правилами; BOM дозволено як позначку замовлення.
  Компоненти комп'ютера: повний посібник з апаратного забезпечення

Також існують певні варіанти , такі як UTF-16BE/UTF-16LE та UTF-32BE/UTF-32LE (без BOM за домовленістю), а також інші історичні кодування сумісності, такі як UTF-7 або UTF-EBCDIC, на додаток до GB18030 (китайський еквівалент UTF-8 з підтримкою спрощеної та традиційної китайської).

Нормалізація, композиція та еквівалентності

Багато символів можна представити як попередньо складені або як послідовності основи + знаки поєднання . Класичні приклади з переглянутого матеріалу: попередньо складена «Ä» — це U+00C4, тоді як розкладена форма — «A» (U+0041) + діареза (U+0308). В'єтнамське «ỗ» можна представити як «o» (U+006F) + циркумфлекс (U+0302) + тильда (U+0303).

Юнікод визначає стандартизовані форми та два типи еквівалентності : канонічну (однаковий основний зміст) та сумісність (форми, які можуть виглядати однаково, але мати семантичні відмінності). Стандартизація забезпечує надійне порівняння рядків та зменшує дублювання.

Двонаправлений алгоритм та спеціальні символи

Для письма справа наліво, такого як арабська чи іврит, Unicode містить стандартизований та постійно розвивається двонаправлений алгоритм (Bidi) (наприклад, редакції у версії 6.3), завдяки чому змішані тексти з латинською та арабською мовами відображаються у правильному візуальному порядку.

Класи кодових точок, які слід знати відповідно до отриманого матеріалу: графічні символи (літери, знаки, символи), форматування (невидимі символи, що впливають на обробку: U+2028 розрив рядка, U+2029 розрив абзацу, U+00A0 пробіл), успадковані контрольні коди для сумісності (діапазони U+0000–U+001F, U+007F, U+0080–U+009F), приватне використання, зарезервовані позиції, замінники (U+D800–U+DFFF для UTF-16) та несимволи (U+FFFE, U+FFFF у кожній площині).

Unicode, ISO/IEC 10646 та інші стандарти (ASCII, ANSI, кодові сторінки)

Юнікод синхронізовано з ISO/IEC 10646 (UCS) та зберігає відповідність попереднім стандартам (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643 тощо), а також резервує пробіли для приватного використання виробниками.

ASCII проти Unicode : ASCII — це 7-бітний набір символів зі 128 символами , достатній для базової англійської мови, але недостатній для мов з діакритичними знаками, ідеограмами або емодзі . Unicode охоплює понад 140 000 символів і продовжує зростати, з 8/16/32-бітним кодуванням відповідно до формату UTF-12.

ANSI та кодові сторінки : «ANSI» зазвичай стосується обмежених та взаємосумісних 8-бітних кодових сторінок Windows. Комп’ютер з OEM-Latin II, який відкриває текст у кодуванні IBM EBCDIC-Cyrillic, бачитиме неправильні символи. Unicode долає цю проблему за допомогою єдиного набору символів та безвтратних перетворень між власними формами.

Впровадження на системах (Windows, Solaris) та конвертація

Windows внутрішньо використовує UTF-16 для своїх сучасних API та пропонує такі функції, як MultiByteToWideChar та WideCharToMultiByte для перетворення між Unicode та кодовими сторінками (SBCS/DBCS/MBCS). Якщо вам доведеться конвертувати кодову сторінку, може статися втрата даних, якщо вона не може відобразити всі символи.

Нові програми у Windows повинні використовувати UTF-16 внутрішньо та залишати перетворення на периферії (введення/виведення, протоколи), мінімізуючи пошкодження. Незважаючи на це, Windows підтримує сумісність із кодовими сторінками, коли це неминуче.

Згідно з переглянутою документацією, Oracle Solaris 11 підтримує Unicode 6.0 та ISO/IEC 10646:2011 на системному рівні, використовуючи UTF-8 як формат за замовчуванням у своїх наборах параметрів, що позбавляє від проблем із порядком байтів та прозоро зберігає ASCII.

Юнікод на практиці: Інтернет, документи та програмування

В інтернеті поширеною практикою є розміщення та зберігання контенту в UTF-8 . У HTML оголосіть '<meta charset="UTF-8">' для забезпечення сумісності та використовуйте шістнадцяткові числові сутності, коли це необхідно (наприклад: євро '&#x20AC;').

  Повний покроковий посібник зі складання комп'ютера

У Word ви можете легко вставляти символи Unicode, розмістивши курсор, перейшовши в меню Вставка > Символ або ввівши код і натиснувши Alt+X; це перетворить значення на його символ, дотримуючись стандартних процедур. Дивіться також список кодів Alt для вставки символів з клавіатури.

У мовах програмування : у Python 3 рядки вже кодуються в Unicode; у Java та C# можна використовувати escape-символи '\uXXXX'; у HTML - '&#xXXXX;'. Важливо, щоб редагування, компіляція та передача використовували однакове кодування, щоб уникнути помилок.

Копіювання та вставка символів працює, якщо весь рядок у форматі Unicode . Якщо його частини використовують інше кодування, можуть з'являтися знаки питання, квадрати або інші дивні символи.

База даних символів (UCD), властивості та категорії

База даних символів Юнікоду (UCD) публікує для кожної кодової точки її назву, категорію, шрифт, властивості регістру, напрямок та інші характеристики . Ця інформація життєво важлива для правильної роботи механізмів рендерингу та обробки тексту.

Завдяки цим властивостям різні компоненти та алгоритми (такі як сортування, сегментація слів або перетворення великих/малих літер) можуть поводитися узгоджено з одними й тими ж даними.

Версії та розширення стандарту: основні моменти

Юнікод розширюється з кожною версією , додаючи нові шрифти, символи та емодзі. Ключовими віхами є версія 1.0 у 1991 році з 7.161 символом та наступні розширення, які додали тисячі нових символів, ідеограм, емодзі та шрифтів.

Наприклад, у 2022 році до версії 15.0 було додано 4.192 додаткові ідеограми CJK та інші елементи, досягнувши приблизно 149 186 символів.

Інструменти для дослідження таблиці Unicode

Існують безкоштовні утиліти для пошуку та аналізу символів : Unibook Character Browser, SYMBL та Branah.com дозволяють запитувати властивості, імена та блоки символів, що полегшує розробникам та творцям контенту швидкий пошук необхідної інформації.

Варіанти використання: форми адрес, інтернаціоналізація та бізнес

Дозвіл користувачам вводити адреси рідною мовою та шрифтом допомагає зменшити кількість помилок та покращити взаємодію з користувачем. Крім того, сумісність Unicode запобігає проблемам конвертації між різними системами, зберігаючи цілісність тексту в усьому цифровому ланцюжку.

З цієї причини Unicode є фундаментальним елементом, який гарантує, що текст залишається остаточним у всій цифровій інфраструктурі , від веб-форм до систем баз даних та друкованих документів, незалежно від того, чи використовуєте ви «ñ», арабську, китайську мову чи емодзі в одному реченні.

Двійкова нумерація
Пов'язана стаття:
Двійкова нумерація: секретна мова комп'ютерів