Проблема розрізнення зовні схожих цифр і букв.

Іноді необхідно додати іконку в ваш дизайн, але вам не хочеться вставляти додаткові зображення або цілий шрифт іконок, такий як Font Awesome? Тоді у нас є для вас гарні новини - є велика бібліотека доступних іконок і символів вже в вашому браузері. Вона називається Unicode, і це стандарт, який присвоює унікальні ідентифікатори для постійно зростаючого числа (в даний час більше 110 000) символів і іконок.

Це не означає, що у вас є вибір сотень тисяч ікон, хоча. Це залежить від браузера, який рендерить їх, і він використовує шрифти, які встановлені в системі, щоб зробити це. У цій статті ми зібрали ряд наборів символів, які доступні в Windows, Linux, OS X, Android і IOS. Ви можете використовувати їх в своєму дизайні сьогодні!

Порада:, яка пояснює все, що потрібно знати про кодування і Unicode, яку ми рекомендуємо для прочитання кожному розробнику ПО.

Як використовувати ці іконки

Іконки, наведені в таблицях нижче, є звичайними символами, які Ви можете скопіювати і вставити як якби вони були літерами алфавіту. Але якщо кодування, яка використовується для збереження файлів HTML / CSS нЕ UTF-8  вони не будуть відображатися. Саме тому ми ввели HTML escape-код, який буде працювати завжди. Ось те, що вам потрібно зробити, щоб використовувати ці іконки:

  • Знайдіть іконку, яка вам подобається. Ми надали малі і великі превью.
  • Скопіюйте код.
  • Вставте її в HTML, як звичайний текст. У CSS ви можете використовувати їх як значення властивості content. В JS, PHP та іншими мовами програмування, ви можете використовувати їх як звичайний текст в рядках.
  • Ви можете налаштувати іконки, встановивши розмір шрифту, колір, текст і тіні, також як звичайний текст.

іконки

Назвапрев'юкод
Smiley
Warning Sign
Hot Springs
Wheelchair
Recycle
8-Ball
High Voltage
White Star
Black Star
White Heart
Black Heart
Coffee
Airplane
Hourglass
Clock
Black Scissors
White Scissors
Crown
Anchor
Cross
Black-White Circle
Eight Note
Beamed Eighth Notes
Four Balloon-Spoked Asterisk
Circled White Star
White Star
White Four Pointed Star
Black Four Pointed Star
Ballot Box Check
Check Mark
Cross Mark
Pencil
Writing Hand
Female
Male
Black Telephone
White Telephone
Envelope
Telephone Location

Стрілки в юникоде

Назвапрев'юкод
Leftwards Arrow
Rightwards Arrow
Upwards Arrow
Downwards Arrow
Left Right Arrow
Up Down Arrow
Right And Left Arrows
Up And Down Arrows
Down-Left 90deg Arrow
Down-Right 90deg Arrow
Up-Left 90deg Arrow
Up-Right 90deg Arrow
North West Arrow To Corner
South East Arrow To Corner
Leftwards Arrow To Bar
Rightwards Arrow To Bar
Anticlockwise Semicircle Arrow
Clockwise Semicircle Arrow
Anticlockwise Circle Arrow
Clockwise Circle Arrow
Wide-Headed Rightwards Arrow
Downwards Zigzag Arrow
North West Arrow
Heavy South East Arrow
Heavy Rightwards Arrow
Heavy North East Arrow
Dashed Rightwards Arrow
Dotted Leftwards Arrow
Black Rightwards Arrowhead
Leftwards White Arrow
Rightwards White Arrow
Left Angle Quotation Mark « « «
Right Angle Quotation Mark » » »
Right Black Pointer
Left Black Pointer
Up Black Pointer
Down Black Pointer
Right White Pointer
Left White Pointer
Up White Pointer
Down White Pointer
Bow Arrow

Спецсимволи в юникоде

Валюта в юникоде

іконки погоди

Назвапрев'юкод
Degree ° ° °
Small Sun
Big Sun
Cloud
Umbrella
Snowflake 1
Snowflake 2
Snowflake 3

Дороговкази в юникоде

Назвапрев'юкод
Pointer Left Black
Pointer Right Black
Pointer Left White
Pointer Up White
Pointer Right White
Pointer Down White

Знаки зодіаку в юникоде

Назвапрев'юкод
Овен
Телець
Близнюки
рак
Лев
Діва
ваги
Скорпіон
Стрілець
Козеріг
Водолій
риби

Карткові символи в юникоде

Назвапрев'юкод
Clubs Black
Hearts Black
Diamonds Black
Spades Black
Clubs White
Hearts White
Diamonds White
Spades White

Шахові фігури в юникоде

Назвапрев'юкод
King White
Queen White
Rook White
Bishop White
Knight White
Pawn White
King Black
Queen Black
Rook Black
Bishop Black
Knight Black
Pawn Black

Гра в кості

Назвапрев'юкод
Dice Roll One
Dice Roll Two
Dice Roll Three
Dice Roll Four
Dice Roll Five
Dice Roll Six

Математичні символи в юникоде

Назвапрев'юкод
Infinity
Plus Minus ± ± ±
Less-Than Or Equal To
More-Than Or Equal To
Not Equal To
Division ÷ ÷ ÷
Multiplication x × × ×
Heavy Multiplication x
Superscript One ¹ ¹ ¹
Superscript Two ² ² ²
Superscript Three ³ ³ ³
Circled Plus
Circled Multiplication
Logical AND
Logical OR
Delta
Pie
Sigma (SUM)
Omega Ω Ω Ω
Empty Set
Angle
Parallel
Perpendicular
Almost Equal To
Triangle
Circle
Square

дробу

Назвапрев'юкод
One Quarter (1/4) ¼ ¼ ¼
One Half (1/2) ½ ½ ½
Three Quarters (3/4) ¾ ¾ ¾
One Third (1/3)
Two Thirds (2/3)
One Eight (1/8)
Three Eights (3/8)
Five Eights (5/8)
Seven Eights (7/8)

Римські цифри в юникоде

Назвапрев'юкод
Roman Numeral One
Roman Numeral Two
Roman Numeral Three
Roman Numeral Four
Roman Numeral Five
Roman Numeral Six
Roman Numeral Seven
Roman Numeral Eight
Roman Numeral Nine
Roman Numeral Ten
Roman Numeral Eleven
Roman Numeral Twelve

Є деякі відмінності рендеринга цих символів в різних операційних системах. Це викликано різними сімействами шрифтів, які використовуються. Крім того, iOS і Android замінюють деякі символи Unicode на смайлики, так що не забудьте перевірити додані символи, щоб переконатися, що цього не станеться і іконки показуються, як передбачалося.

Елементам кодового простору, що представляє невід'ємні цілі числа. Сімейство кодувань визначає машинне представлення послідовності кодів UCS.

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

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

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

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

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

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

Роль цієї кодування в веб-секторі постійно зростає, на початок 2010 року частка веб-сайтів, які використовують Юнікод, склала близько 50%.

версії Юникода

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

  • 1.1 (відповідає стандарту ISO / IEC 10646-1: 1993), стандарт 1991-1995 років.
  • 2.0, 2.1 (той же стандарт ISO / IEC 10646-1: 1993 плюс доповнення: «Amendments» з 1-го по 7-е і «Technical Corrigenda» 1 і 2), стандарт 1996 року.
  • 3.0 (стандарт ISO / IEC 10646-1: 2000), стандарт 2000 року.
  • 3.1 (стандарти ISO / IEC 10646-1: 2000 та ISO / IEC 10646-2: 2001), стандарт 2001 року.
  • 3.2, стандарт 2002 року.
  • 4.0, стандарт 2003.
  • 4.01, Стандарт 2004р.
  • 4.1, стандарт 2005.
  • 5.0, стандарт 2006.
  • 5.1, стандарт 2008.
  • 5.2, стандарт 2009.
  • 6.0, стандарт 2010 року.
  • 6.1, стандарт 2012.
  • 6.2, стандарт 2012.

кодова простір

Хоча форми записи UTF-8 і UTF-32 дозволяють кодувати до 2 31 (2 147 483 648) кодових позицій, було прийнято рішення використовувати лише 1 112 064 для сумісності з UTF-16. Втім, навіть і цього більш ніж достатньо - сьогодні (у версії 6.0) використовується трохи менше 110 000 кодових позицій (109 242 графічних та 273 інших символів).

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

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

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

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

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

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

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

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

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

Представлення символу «Ї» (U + 0419) у вигляді базового символу «І» (U + 0418) і модифікує символу «̆» (U + 0306)

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

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

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

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

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

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

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

приклади

Початковий текст NFD NFC NFKD NFKC
Français   Franc \\ u0327ais   Fran \\ xe7ais   Franc \\ u0327ais   Fran \\ xe7ais
А, Е, Й   \\ U0410, \\ u0401, \\ u0419   \\ U0410, \\ u0415 \\ u0308 \\ u0418 \\ u0306   \\ U0410, \\ u0401, \\ u0419
  \\ U304b \\ u3099   \\ u304c   \\ U304b \\ u3099   \\ u304c
Henry IV   Henry IV   Henry IV   Henry IV   Henry IV
Henry ⅳ   Henry \\ u2163   Henry \\ u2163   Henry IV   Henry IV

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

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

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

презентовані символи

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

та інші.

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

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

Однак в Юнікод принципово не включаються логотипи компаній і продуктів, хоча вони і зустрічаються в шрифтах (наприклад, логотип Apple в кодуванні MacRoman (0xF0) або логотип Windows в шрифті Wingdings (0xFF)). У юнікодовскіх шрифтах логотипи повинні розміщуватися тільки в області користувальницьких символів.

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).

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

Теоретично можливі, але не включені в стандарт також:

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). Аналогічно існує два варіанти четирёхбайтной кодування - 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 допускається Юнікод (хоча реальні тексти рідко починаються з нього).

Файли в кодуваннях UTF-16 і UTF-32, що не містять BOM, повинні мати порядок байтів big-endian (unicode.org).

Юнікод і традиційні кодування

Впровадження Юникода призвело до зміни підходу до традиційних 8-бітовим кодувань. Якщо раніше кодування задавалася шрифтом, то тепер вона задається таблицею відповідності між даним кодуванням і Unicode. Фактично 8-бітові кодування перетворилися в форму подання деякого підмножини Юникода. Це набагато спростило створення програм, які повинні працювати з безліччю різних кодувань: тепер, щоб додати підтримку ще одного кодування, треба всього лише додати ще одну таблицю перекодування в Юнікод.

Крім того, багато форматів даних дозволяють вставляти будь-які символи Юнікоду, навіть якщо документ записаний в старій 8-бітної кодуванні. Наприклад, в HTML можна використовувати коди з амперсандом.

реалізації

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

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

Юнікод (по-англійськи Unicode) - це стандарт кодування символів. Простіше кажучи, це таблиця відповідності текстових знаків (, букв, елементів пунктуації) Двійковим кодами. Комп'ютер розуміє тільки послідовність нулів і одиниць. Щоб він знав, що саме повинен відобразити на екрані, необхідно присвоїти кожному символу свій унікальний номер. У вісімдесятих, знаки кодували одним байтом, тобто вісьмома бітами (кожен біт це 0 або 1). Таким чином виходило, що одна таблиця (вона ж кодування або набір) може вмістити лише 256 знаків. Цього може не вистачити навіть для однієї мови. Тому, з'явилося багато різних кодувань, плутанина з якими часто призводила до того, що на екрані замість тексту, що читається з'являлися якісь дивні кракозябри. Був потрібен єдиний стандарт, яким і став Юнікод. Сама використовувана кодування - UTF-8 (Unicode Transformation Format) для зображення символу задіє від 1 до 4 байт.

символи

Символи в таблицях Юникода пронумеровані шестнадцатерічнимі числами. Наприклад, кирилична заголовна буква М позначена U + 041C. Це означає, що вона стоїть на перетині рядка 041 і стовпця С. Її можна просто скопіювати і потім вставити куди-небудь. Щоб не ритися в багатокілометровому списку слід скористатися пошуком. Зайшовши на сторінку символу, ви побачите його номер в Юникоде і спосіб накреслення в різних шрифтах. У рядок пошуку можна вбити і сам знак, навіть якщо замість нього отрісовивается квадратик, хоча б для того, щоб дізнатися, що це було. Ще, на цьому сайті є спеціальні (і - випадкові) набори однотипних значків, зібрані з різних розділів, для зручності їх використання.

Стандарт Юнікод - міжнародний. Він включає знаки майже всіх писемностей світу. У тому числі і тих, які вже не застосовуються. Єгипетські ієрогліфи, німецькі руни, писемність майя, клинопис і алфавіти древніх держав. Представлені і позначення мір і ваг, нотних грамот, математичних понять.

Сам консорціум Юникода не показала нових символів. У таблиці додаються ті значки, які знаходять своє застосування в суспільстві. Наприклад, знак рубля активно використовувався протягом шести років перш ніж був доданий в Юнікод. Піктограми емодзі (смайлики) теж спочатку отримали широке застосування в Японіїі перш ніж були включені в систему кодування. А от товарні знаки, І логотипи компаній не додаються принципово. Навіть такі поширені як яблуко Apple або прапор Windows. На сьогоднішній день, в версії 8.0 закодовано близько 120 тисяч символів.

Кожен користувач Інтернету в спробах налаштувати ту чи іншу його функцію хоча б один раз бачив на дисплеї написане слово «Юнікод». Що це таке, ви дізнаєтеся, прочитавши цю статтю.

визначення

Кодування "Юнікод" - стандарт кодування символів. Він був запропонований некомерційною організацією Unicode Inc. в 1991 році. Стандарт розроблений з метою об'єднання якомога більшої кількості різнотипних символів в одному документі. Сторінка, яка створена на його основі, може містити в собі букви і ієрогліфи з різних мов (від російського до корейського) і математичні знаки. При цьому всі символи в даному кодуванні відображаються без проблем.

причини створення

Колись, задовго до появи єдиної системи "Юнікод", кодування вибиралася виходячи з переваг автора документа. З цієї причини нерідко, щоб прочитати один документ, потрібно було використовувати різні таблиці. Іноді це доводилося робити по кілька разів, що істотно ускладнювало життя звичайному користувачеві. Як вже було сказано, рішення цієї проблеми в 1991 році було запропоновано некомерційною організацією Unicode Inc., яка запропонувала новий тип кодування символів. Він був покликаний об'єднати морально застарілі і різноманітні стандарти. "Юнікод" - кодування, яка озволіла домогтися немислимого на той момент: створити інструмент, який підтримує величезну кількість символів. Результат перевершив багато очікувань - з'явилися документи, одночасно містять як англійська, так і російський текст, латинь і математичні вирази.

Але створення єдиної кодування передувала необхідність дозволу ряду проблем, які виникли через величезного розмаїття стандартів, вже існували на той момент. Найпоширеніші з них:

  • ельфійські письмена, або «кракозябри»;
  • обмеженість набору символів;
  • проблема перетворення кодувань;
  • дублювання шрифтів.


Невеликий історичний екскурс

Уявіть, що на дворі 80-е. Комп'ютерна техніка ще не так поширена і має вигляд, відмінний від сьогоднішнього. У той час кожна ОС по-своєму унікальна і доопрацьована кожним ентузіастом під конкретні потреби. Необхідність обміну інформацією перетворюється в додаткове доопрацювання всього на світі. Спроба прочитати документ, створений під іншою ОС, часто виводить на екран незрозумілий набір символів, і починаються ігри з кодуванням. Не завжди виходить зробити це швидко, і часом необхідний документ вдається відкрити через півроку, а то й пізніше. Люди, які часто обмінюються інформацією, створюють для себе таблиці перетворення. І ось робота над ними виявляє цікаву деталь: створювати їх потрібно за двома напрямками: «з моєї в твою» і назад. Зробити банальну інверсію обчислень машина не може, для неї в правому стовпчику исходник, а в лівому - результат, але ніяк не навпаки. Якщо з'являлася необхідність використовувати будь-які спеціальні символи  в документі, їх необхідно було спочатку додати, а потім ще й пояснити партнеру, що йому потрібно зробити, щоб ці символи не перетворилися в «кракозябри». І не будемо забувати, що під кожну кодування доводилося розробляти або впроваджувати власні шрифти, що призводило до створення величезної кількості дублів в ОС.

Уявіть ще, що на сторінці шрифтів ви побачите 10 штук ідентичних Times New Roman з маленькими позначками: для UTF-8, UTF-16, ANSI, UCS-2. Тепер ви розумієте, що розробка універсального стандарту була нагальною потребою?

«Батьки-творці»

Витоки створення Unicode слід шукати в 1987 році, коли Джо Беккер з Xerox разом з Лі Коллінзом і Марком Девісом з компанії Apple почали дослідження в сфері практичного створення універсального набору символів. У серпні 1988 року Джо Беккер опублікував проект пропозиції щодо створення 16-бітної міжнародної багатомовної системи кодування.

Через кілька місяців робоча група Unicode була розширена за рахунок включення Кена Уістлера і Майка Кернегана з RLG, Гленн Райт з Sun Microsystems і декількох інших фахівців, що дозволило завершити роботи з попереднього формування єдиного стандарту кодування.


Загальний опис

В основі Unicode лежить поняття символу. Під цим визначенням розуміється абстрактне явище, існуюче в конкретному виді писемності і реалізоване через графеми (свої «портрети»). Кожен символ задається в "Юникоде" унікальним кодом, що належить конкретному блоку стандарту. Наприклад, графема B є і в англійському, і в російській алфавітах, але в Unicode їй відповідають 2 різних символу. До них застосовується перетворення в т. Е. Кожен з них описується ключем бази даних, набором властивостей і повною назвою.

переваги Unicode

Від інших сучасників кодування "Юнікод" відрізнялася величезним запасом знаків для «шифрування» символів. Справа в тому, що його попередники мали 8 біт, тобто підтримували 28 символів, а ось нова розробка мала вже 216 символів, що стало гігантським кроком вперед. Це дозволило закодувати практично всі існуючі і поширені алфавіти.

З появою "Юникода" відпала потреба використовувати таблиці перетворення: як єдиний стандарт він просто зводив нанівець їх необхідність. Точно так же канули в Лету і «кракозябри» - єдиний стандарт зробив їх неможливими, так само як і виключив необхідність створення дублів шрифтів.

розвиток Unicode

Звичайно, прогрес не стоїть на місці, і з моменту першої презентації минуло вже 25 років. Однак кодування "Юнікод" вперто утримує свої позиції в світі. Багато в чому це стало можливим завдяки тому, що він став легко впроваджуються і набув поширення, будучи визнаним розробникам пропрієтарного (платного) і відкритого ПЗ.


При цьому не варто думати, що сьогодні нам доступна та ж кодування "Юнікод", що і чверть століття тому. на даний момент  її версія змінилася на 5.х.х, а кількість кодованих символів зросла до 231. Від можливості використовувати більший запас знаків відмовилися, щоб все ще зберегти підтримку для Unicode-16 (кодування, де максимальна їх кількість обмежувалася цифрою 216). З моменту своєї появи і до версії 2.0.0 "Юнікод-стандарт" збільшив кількість символів, які в нього входили, практично в 2 рази. Зростання можливостей тривав і в наступні роки. До версії 4.0.0 вже з'явилася необхідність збільшити сам стандарт, що і було зроблено. В результаті "Юнікод" знайшов той вид, в якому ми його знаємо сьогодні.


Що ще є в Unicode?

Крім величезного, постійно поповнюється кількості символів, має ще одну корисну рису. Йдеться про так званої нормалізації. Замість того щоб перегортати весь документ символ за символом і підставляти відповідні значки з таблиці відповідності, використовується один з існуючих алгоритмів нормалізації. Про що мова?

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

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


поширення стандарту

За 25 років своєї історії кодування "Юнікод" отримала, ймовірно, найбільше поширення в світі. Під цей стандарт підганяються також програми і web-сторінки. Про широту застосування може говорити той факт, що Unicode сьогодні використовують понад 60% інтернет-ресурсів.

Тепер вам відомо, коли з'явився стандарт "Юнікод". Що це таке, ви також знаєте і зможете оцінити всі значення винаходи, зробленого групою фахівців Unicode Inc. більше 25 років тому.

  (Коди від 0 до 127), тобто одним байтом кодуються латинські літери, Цифри і спеціальні символи. Російські літери (кирилиця) представляються 16-бітними (двухбайтное) кодами:

110XXXXX 10XXXXXX,

де X позначені виконавчі розряди для розміщення коду символу відповідно до таблиці UNICODE.

Юнікод (англ. Unicode) - стандарт кодування символів, що дозволяє представити знаки майже всіх письмових мов. Подані в юникоде символи кодуються цілими числами без знака. Ці числа будемо називати кодами символів в юникоде або просто UNICODE. Юнікод має кілька форм представлення символів в комп'ютері: UTF-8, UTF-16 (UTF-16BE, UTF-16LE) і UTF-32 (UTF-32BE, UTF-32LE). (Англ. Unicode transformation format - UTF).

Розглянемо, як кодується в UTF-8  літера Ж. її UNICODE  - 1046 10 або 0416 16 або 10000 010110 2. UNICODE  в двійковому вигляді розбивається на дві частини: п'ять лівих біт і шість правих. Ліва частина доповнюється до байта ознакою 110   двухбайтное коду UTF-8: 110 10000. До правої частини приписуються два біта 10   ознаки продовження багатобайтові коду: 10 010110. Остаточно код букви Ж  в UTF-8  виглядає так:

110 10000 10 010110 2
  або D0 96 16

Таким чином, російська буква кодується двічі: спочатку в 11-бітний UNICODE, А потім - в 16-бітний UTF-8.

У наведеній нижче таблиці, крім кодів UNICODE  і UTF-8  в шістнадцятковій системі числення, дані коди UTF-8   в десятковій системі числення і для порівняння коди кирилиці в кодуванні CP-1251, Інакше званої windovs-1251.

   Таблиця кодів кирилиці в UTF-8
символUNICODEUTF-8CP-1251
Шістнадцятковим.десятШістнадцятковим.десят
А0410 1040 D090208 144 192
Б0411 1041 D091208 145 193
В0412 1042 D092208 146 194
Г0413 1043 D093208 147 195
Д0414 1044 D094208 148 196
Е0415 1045 D095208 149 197
Ж0416 1046 D096208 150 198
З0417 1047 D097208 151 199
І0418 1048 D098208 152 200
Й0419 1049 D099208 153 201
До041A1050 D09A208 154 202
Л041B1051 D09B208 155 203
М041C1052 D09C208 156 204
Н041D1053 D09D208 157 205
Про041E1054 D09E208 158 206
П041F1055 D09F208 159 207
Р0420 1056 D0A0208 160 208
З0421 1057 D0A1208 161 209
Т0422 1058 D0A2208 162 210
У0423 1059 D0A3208 163 211
Ф0424 1060 D0A4208 164 212
Х0425 1061 D0A5208 165 213
Ц0426 1062 D0A6208 166 214
Ч0427 1063 D0A7208 167 215
Ш0428 1064 D0A8208 168 216
Щ0429 1065 D0A9208 169 217
ред042A1066 D0AA208 170 218
И042B1067 D0AB208 171 219
Ь042C1068 D0AC208 172 220
Е042D1069 D0AD208 173 221
Ю042E1070 D0AE208 174 222
Я042F1071 D0AF208 175 223
а0430 1072 D0B0208 176 224
б0431 1073 D0B1208 177 225
в0432 1074 D0B2208 178 226
г0433 1075 D0B3208 179 227
д0434 1076 D0B4208 180 228
е0435 1077 D0B5208 181 229
ж0436 1078 D0B6208 182 230
з0437 1079 D0B7208 183 231
і0438 1080 D0B8208 184 232
й0439 1081 D0B9208 185 233
до043A1082 D0BA208 186 234
л043B1083 D0BB208 187 235
м043C1084 D0BC208 188 236
н043D1085 D0BD208 189 237
про043E1086 D0BE208 190 238
п043F1087 D0BF208 191 239
р0440 1088 D180209 128 240
з0441 1089 D181209 129 241
т0442 1090 D182209 130 242
у0443 1091 D183209 131 243
ф0444 1092 D184209 132 244
х0445 1093 D185209 133 245
ц0446 1094 D186209 134 246
ч0447 1095 D187209 135 247
ш0448 1096 D188209 136 248
щ0449 1097 D189209 137 249
ь044A1098 D18A209 138 250
и044B1099 D18B209 139 251
ь044C1100 D18C209 140 252
е044D1101 D18D209 141 253
ю044E1102 D18E209 142 254
я044F1103 D18F209 143 255
Символи поза загальним правила
Е0401 1025 D001208 101 168
е0451 1025 D191209 145 184