Unicode (Юнікод) це стандарт кодування символів, де кожному символу присвоюється свій унікальний код, незалежно від програмної і апаратної платформи.
Спочатку для кодування символів використовували 8 біт, які дають 256 комбінацій нулів і одиниць. Цього цілком достатньо щоб закодувати весь латинський алфавіт, цифри, розділові знаки, арифметичні знаки, спеціальні керуючі символи. стандартом став ASCII . До того ж зручно і компактно, коли один символ дорівнює одному байту.
Але 256 значень мало, для того щоб помістити туди ще символи інших мов. Таких як грецький алфавіт, кирилиця, китайські ієрогліфи, математичні символи і т.д. Що не дивно, адже ASCII - американський стандартний код, розроблявся американцями, для американців.
Вже на початку 70-х комп'ютери поширилися від університетів, обчислювальних центрах , Закритих державних установ до невеликих приватних підприємств і домашніх користувачів. США, Канада. Великобританія перестають бути монополістами в світі інформаційних технологій. У кожній країні є свої обчислювальні центри, IT-університети і патенти в цій галузі.
Як наслідок, з'являється величезна кількість альтернативних кодувань. Адже кожної писемності, потрібні свої місця в кодової таблиці. Але разом з тим з'являється маса проблем.
Перша з них. Це неправильне відображення документів одного кодування в іншу. Для того щоб документ набув читабельний вигляд, необхідно мати спеціальну таблицю, по якій машина порівняє символи одного кодування з іншого. Для кожної пари кодувань потрібна така таблиця. Альтернатива цьому, використовувати третю кодування яка містить всі символи перших двох. Незручно людині і зайве використання ресурсів машини.
Друга проблема. Шрифт, створюється під певну кодову таблицю символів. Деякі таблиці символів можуть збігатися, більш ніж на 90%. Ставати не вигідно зберігати різні шрифти, для (майже) однакових кодувань. Можна створювати універсальні шрифти. Але тоді потрібно зберігати додаткові дані, які допоможуть розібратися, які символи шрифту, яким символам кодування відповідають.
На початку 80-х криза «крокозябри», в текстах, досяг свого піку. Необхідність в універсальної кодової таблиці стала очевидною. Потрібен єдиний стандарт. Де помістилися б усі символи. І в 1991 році такий стандарт був прийнятий, консорціумом Юнікод. Під назвою Unicode. До консорціуму увійшли провідні IT-підприємства, які і визначили, якою має бути єдина кодування.
Якщо використовувати кодування зі змінною шириною, то спочатку потрібно додаткові алгоритми. Які визначать скільки потрібно байт для зберігання того чи іншого символу. Необхідно мати алгоритми які, в ланцюжку біт, будуть обчислювати де кінець, поточного символу, і де початок наступного. Вирішили, що все це буде складно, і ввели кодування з фіксованою шириною. Кодування зі змінною шириною, дозволяє використовує стільки біт, скільки необхідно для зберігання символ. Вона набагато компактніше. Цим фактором, спочатку знехтували.
Скільки потрібно біт, для нового стандарту Unicode? 8 біт дасть 256 значень для символів (28 = 256). Практика довела, це мало. 32 біта дасть (232 = 2 294 967 296) позицій для символів. Це багато. Занадто, що не ефективне використання машинної пам'яті. Оптимальним варіантом, це взяти 16 біт (216 = 65536). Таким чином перша версія Unicode була фіксованою шириною 16 біт. До неї увійшли не всі символи, а тільки найуживаніші, що містилися рані в відомих кодуваннях. Наприклад, в Unicode не потрапили, рідко використовуються китайські ієрогліфи. І не які символи з вищої математики.
Кожен символ Unicode має свій порядковий номер. Який за стандартом записується шістнадцятковим числом .
Останні версії Unicode були сильно змінені. І перше, що вирішили, це зберігати всі існуючі символи в даному кодуванні. Символи в Unicode стали змінної довжини. Кодову таблицю розбили на два простору. У першому, зберігають всі найбільш вживані символи. Це в діапазоні від 0 до 65535. Інший простір використовується для рідко вживаних символів. Будь-який символ можна уявити кількома кодами. Тому існуючу таблицю Unicode постійно нормалізують і випускають нові версії. Сучасний Unicode підтримує писемність зліва направо так і на оборот справа наліво, арабські символи. Він навіть дозволяє створювати двонаправлені тексти. Тобто в тексті, що відноситься до однієї кодової таблиці, можуть міститися символи, що пишуться як справа наліво так і навпаки. Але цю можливість повинні підтримувати і апаратні пристрої.
В Unicode включає в себе не тільки символи різних мов. Але і узкоспеціалізіруемие математичні символи, ноти. У ньому міститься все сучасні писемності. І навіть рідко використовуються такі як коптское лист, черокі, ефіопський. Для академічних, кіл в кодову таблицю, додали навіть вимерлі писемності. Наприклад: клинопис, руни, єгипетські ієрогліфи, етруська алфавіт.
UTF (Unicode Transformation Format) це форма подання Unicode. Найпоширеніші UTF-8, UTF-16, UTF-32. Наприклад UTF-8 уявлення Unicode створене для сумісності зі старими 8-бітними кодовими таблицями. Перші 128 символів UTF-8 абсолютно ідентичні ASCII.