Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

UTF-8



План:


Введення

UTF-8 (від англ. Unicode Transformation Format - Формат перетворення Юнікоду) - в даний час поширена кодування, що реалізовує представлення Юнікоду, сумісне з 8-бітовим кодуванням тексту. Знайшла широке застосування в операційних системах і веб-просторі [1].

На відміну від UTF-16, UTF-8 є самосінхронізірующіхся кодуванням (англ.): при втраті одного байта наступні байти будуть розкодувати коректно.

Текст, що складається тільки з символів Юнікоду з номерами менше 128, при записі в UTF-8 перетворюється на звичайний текст ASCII. І навпаки, в тексті UTF-8 будь байт із значенням менше 128 зображає символ ASCII з тим же кодом. Решта символів Юнікоду зображуються послідовностями завдовжки від 2 до 6 байт (реально тільки до 4 байт, оскільки використання кодів більше 2 21 не планується), в яких перший байт завжди має вид 11xxxxxx, а решта - 10xxxxxx.

Простіше кажучи, у форматі UTF-8 символи латинського алфавіту, розділові знаки і керуючі символи ASCII записуються кодами US-ASCII, a всі інші символи кодуються за допомогою декількох октетів із старшим бітом 1. Це приводить до двох ефектів.

  • Навіть якщо програма не розпізнає Юнікод, то латинські літери, арабські цифри і знаки пунктуації будуть відображатися правильно.
  • У випадку, якщо латинські букви і найпростіші знаки пунктуації (включаючи пробіл) займають істотний обсяг тексту, UTF-8 дає виграш за обсягом у порівнянні з UTF-16. [2] [3]
  • На перший погляд може здатися, що UTF-16 зручніше, так як в ній більшість символів кодується рівно двома байтами. Однак це зводиться нанівець необхідністю підтримки сурогатних пар, про які часто забувають при використанні UTF-16, реалізуючи лише підтримку символів UCS-2. [2]

Формат UTF-8 був винайдений 2 вересня 1992 Кеном Томпсоном і Робом Пайком і реалізований в Plan 9. [4] Зараз стандарт UTF-8 офіційно закріплений в документах RFC 3629 і ISO / IEC 10646 Annex D.

Символи UTF-8 виходять з Unicode таким чином:

Unicode UTF-8 Представлені символи
0x00000000 - 0x0000007F 0xxxxxxx ASCII, в тому числі латинський алфавіт, найпростіші знаки пунктуації і арабські цифри
0x00000080 - 0x000007FF 110xxxxx 10xxxxxx кирилиця, розширена латиниця, арабський, вірменський, грецький, єврейський і коптський алфавіт; сирійське лист, тана, НКО; МФА; деякі знаки пунктуації
0x00000800 - 0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx всі інші сучасні форми писемності, у тому числі грузинський алфавіт, індійське, китайське, корейське і японське лист; складні знаки пунктуації; математичні та інші спеціальні символи
0x00010000 - 0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx музичні символи, рідкісні китайські ієрогліфи, вимерлі форми писемності

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

Unicode UTF-8
0x00200000 - 0x03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 - 0x7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Зауваження: Символи, закодовані в UTF-8, можуть бути завдовжки до шести байтів, проте стандарт Unicode не визначає символів вище 0x10ffff, тому символи Unicode можуть мати максимальний розмір в 4 байти в UTF-8.


1. Невикористані значення байтів

У тексті UTF-8 принципово не може бути байтів зі значеннями 254 (0xFE) і 255 (0xFF). Оскільки в Юникоде не визначені символи з кодами вище 2 21, то в UTF-8 виявляються невикористовуваними також значення байтів від 248 до 253 (0xF8-0xFD). Якщо заборонені штучно подовжені (за рахунок додавання провідних нулів) послідовності UTF-8, то не використовуються також байтові значення 192 і 193 (0xC0 і 0xC1).

2. Порядок байтів (BOM, сигнатура)

Багато програм Windows (включаючи Блокнот) додають байти 0xEF, 0xBB, 0xBF на початку будь-якого документа, що зберігається як UTF-8. Це мітка порядку байтів Юнікод (англ. Byte Order Mark, BOM), також її часто називають сигнатурою (відповідно, UTF-8 і UTF-8 with Signature). За наявністю сигнатури програми можуть автоматично визначити, чи є файл закодованим в UTF-8, однак файли з такою сигнатурою можуть некоректно оброблятися старими програмами, зокрема xml-аналізаторами. Такі редактори, як Notepad + +, Notepad2 і Kate, дозволяють явно зазначено, чи додавати сигнатуру при збереженні UTF-файлів.

Наприклад: У файлі записана одна латинська буква "a".

  • Якщо кодування цього файлу UTF-8 with Signature, то він буде містити: EF BB BF 61
  • Якщо кодування цього файлу UTF-8 (без сигнатури), то він буде містити: 61

Примітки

  1. Usage Statistics of Character Encodings for Websites, June 2011 - w3techs.com/technologies/overview/character_encoding/all (Англ.)
  2. 1 2 Well, I'm Back String Theory - weblogs.mozillazine.org/roc/archives/2008/01/string_theory.html (Англ.) . Robert O'Callahan (1 March 2008). Фотогалерея - www.webcitation.org/6193EbztY з першоджерела 23 серпня 2011.
  3. Ростислав Чебикін усіма кодуваннями кодування. UTF-8: сучасно, грамотно, зручно. - webmastak.com / article.aspx? id = 300. HTML і CSS. архіві - www.webcitation.org/6193F9SrL з першоджерела 23 серпня 2011.
  4. http://www.cl.cam.ac.uk/ ~ mgk25/ucs/utf-8-history.txt - www.cl.cam.ac.uk/ ~ mgk25/ucs/utf-8-history.txt (Англ.)

Цей текст може містити помилки.

Схожі роботи | скачати

Схожі роботи:
UTF-16
© Усі права захищені
написати до нас
Рейтинг@Mail.ru