UTF-8 (від — формат перетворення Юнікоду) — кодування, що реалізовує представлення Юнікоду, сумісне з 8-бітовим кодуванням тексту.
Текст, що складається тільки з символів, коди яких менші ніж 128, при записі в UTF-8 перетворюється на звичайний текст ASCII. І навпаки, в тексті UTF-8 будь-який байт із значенням менше, ніж 128 зображає символ ASCII з тим же кодом. Решта символів Юнікоду зображається послідовностями завдовжки від 2 до 6 байтів (реально тільки до 4 байтів, оскільки використання кодів більших, ніж 221 не планується), в яких перший байт завжди має вид 11xxxxxx, а решта — 10xxxxxx. Простіше кажучи, у форматі UTF-8 символи латинського алфавіту, розділові знаки і символи управління ASCII записуються кодами US-ASCII, а решта символів кодується за допомогою октетів із старшим бітом 1. В результаті, навіть якщо програма не розпізнає Юнікод, то англійська мова і розмітка все одно відображатимуться правильно.
Формат UTF-8 був винайдений 2 вересня 1992 року Кеном Томпсоном і Робом Пайком і реалізований в Plan 9. Зараз стандарт UTF-8 офіційно закріплений в документах RFC 3629 і ISO/IEC 10646 Annex D.
Символи UTF-8 виходять з Unicode таким чином: Unicode UTF-80x00000000 — 0x0000007F 0xxxxxxx0x00000080 — 0x000007FF 110xxxxx 10xxxxxx0x00000800 — 0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx0x00010000 — 0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Також теоретично можливі, але не включені в стандарти: Unicode UTF-80x00200000 — 0x03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx0x04000000 — 0x7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
Зауваження: Символи, закодовані в UTF-8, можуть бути завдовжки до шести байтів, проте стандарт Unicode не визначає символів вище 0x10ffff, тому символи Unicode можуть мати максимальний розмір в 4 байти в UTF-8.
Див. також Юнікод Маркер порядку байт
Примітки
Посилання RFC 2277 Настанови IETF щодо кодувань і мов Оригінальна специфікація UTF-8