6 Двубайтне кодування (ISO10646, UTF-8)
ISO 10646 або 646
Міжнародною організацією зі стандартизації (International Organization for Standardization, ISO), що базується в Женеві, Швейцарія. У 1967-му році була випущена рекомендація ISO 646. Вона, в основному, посилалася на використання коду ASCII "як є", за винятком того, що 10 позицій у таблиці символів повинні бути залишені відкритими для "національних варіантів", як в коді Бодо (в ньому, як ми пам'ятаємо, таких позицій було 3). Десять символів, які повинні були займати ці позиції в кодової таблиці, були зазначені у версії цієї рекомендації, відомої як International Reference Version (IRV). Таблиця символів, використовувана в системі кодування ASCII, була також використана в якості базової при створенні 7-бітних таблиць символів для мов, не використовують латинський алфавіт, наприклад, арабського і грецького *. У 1969-му році вона була зроблена основою таблиці символів для японської мови, визначеної стандартом JIS. На даний момент існує в загальній складності близько 180 таблиць символів для різних мов, що використовуються у 8-бітних системах кодування, званих "розширеннями системи кодування ASCII", зареєстрованих ISO
Кодування UTF-8 володіє наступними властивостями:
- UCS-символи з кодами від 0x00000000 до 0x0000007f (стандартний набір US-ASCII) кодуються як байти з кодами від 0x00 до 0x7f (сумісність з кодовою таблицею ASCII). Це означає, що файли і рядки, що містять тільки 7-бітові ASCII-символи, будуть мати однакове уявлення як в ASCII, так і в UTF-8.
- Всі UCS-символи з кодами> 0x7f кодуються як багатобайтові послідовності, що містять тільки байти в діапазоні від 0x80 до 0xfd, так що ASCII-байти не виявляться частиною іншого символу і, як наслідок, не буде проблем з використанням '\ 0' або '/ '.
- Зберігається лексикографічний порядок сортування рядків кодування UCS-4.
- За допомогою UTF-8 можуть бути закодовані всі можливі 2 ^ 31 UCS.
- У кодуванні UTF-8 ніколи не використовуються байти з кодами 0xfe і 0xff.
- Перший байт багато байтові послідовності, що представляє один не-ASCII UCS-символ, завжди знаходиться в діапазоні від 0xc0 до 0xfd і вказує на довжину цієї послідовності. Усі наступні байти в багато байтові послідовності знаходяться в діапазоні від 0x80 до 0xbf. Це забезпечує легку ре синхронізацію, усуває необхідність враховувати стан вхідного потоку (statelessness) і робить кодування незалежної від пропущених байтів.
- Символи UCS, закодовані в UTF-8, можуть бути завдовжки до шести байтів, проте стандарт Unicode не визначає символів вище 0x10ffff, тому символи Unicode можуть мати максимальний розмір в 4 байти в UTF-8.