Кодування UTF-8 глобального цифрового зв’язку - IONOS

Той, хто читає веб-сайт англійською мовою або японською електронною поштою, не тільки здатний розмовляти цими мовами, але й, швидше за все, є свідком тріумфального просування UTF-8. "UTF-8" - це абревіатура для "8-розрядний формат перетворення UCS " і означає найпоширеніше кодування символів у Всесвітній павутині. Міжнародний стандарт Unicode записує всі мовні символи та текстові елементи (майже) на всіх мовах світу для обробки ІТ. UTF-8 відіграє головну роль у наборі символів Unicode.

язку

  1. Еволюція кодування UTF-8
    1. Проблеми до введення UTF-8
    2. Створення UTF-8
  2. UTF-8 у наборі символів Unicode: стандарт для всіх мов
    1. Альтернативи: UTF-32 та UTF-16
    2. Ефективний та масштабований: UTF-8
  3. Основи: кодування та склад UTF-8
  4. Перетворення шістнадцяткового Unicode в двійковий формат UTF-8
  5. UTF-8 в редакторі
  6. Висновок: кодування UTF-8 покращує міжнародне спілкування

Еволюція кодування UTF-8

UTF-8 - це кодування символів. Він присвоює точно певну послідовність бітів кожному існуючому символу Unicode, який також можна прочитати як двійкове число. Це означає: UTF-8 призначає фіксований двійковий номер для всіх букв, цифр та символів у зростаючій кількості мов. Міжнародні організації, для яких стандарти Інтернету важливі і які вони хочуть створити відповідно, працюють над тим, щоб зробити UTF-8 незаперечною силою кодування. Серед іншого що W3C а також Робоча група з питань Інтернет-інженерії заступитися за це. Насправді ще в 2009 році більшість веб-сайтів у світі використовували кодування UTF-8. У березні 2018 року, відповідно до звіту W3Techs, 90,9 відсотка всіх існуючих веб-сайтів використовували це кодування символів.

Проблеми до введення UTF-8

У різних регіонах зі спорідненими мовами та системами письма є свої власні стандарти кодування розвинені, оскільки вони мали різні потреби. Наприклад, в англомовних країнах було достатньо кодування ASCII, структура якого дозволяє присвоїти 128 символів рядку, що читається комп’ютером. Однак азіатські шрифти або кирилиця використовують більш унікальні окремі символи. Німецькі умлаути (наприклад, буква ä) також відсутні в ASCII. Крім того, призначення різних кодувань можна дублювати. В результаті, наприклад, документ, написаний російською мовою, відображався на американському комп’ютері з використанням латинських літер, призначених у цій системі замість кириличних букв. Отримані бешкетники ускладнила міжнародне спілкування значний.

Створення UTF-8

Для вирішення цієї проблеми Джозеф Д. Беккер розробив універсальний набір символів Unicode для Xerox між 1988 і 1991 роками. З 1992 року існував також консорціум ІТ-галузі X/Відкрити шукає систему, яка повинна замінити ASCII і розширити репертуар персонажів. Тим не менше, кодування повинно залишатися сумісним з ASCII. Цій вимозі не відповідало перше кодування, зване UCS-2, яке просто передало номери символів у 16-бітові значення. UTF-1 також не вдався, оскільки призначення Unicode частково зіткнулися з існуючими призначеннями символів ASCII. Сервер, якому було встановлено ASCII, іноді видає неправильні символи. Це було значною проблемою, оскільки більшість англомовних комп'ютерів працювали з ними на той час. Наступний хід був у Формат безпечної файлової системи UCS для перетворення (FSS-UTF) від Дейв Проссер, який видалив перекриття символами ASCII.

У серпні того ж року проект обійшов професійні кола. Співзасновники Unix працювали в Bell Labs, відомій численними лауреатами Нобелівської премії Кен Томпсон і Роб Пайк за планом операційної системи 9. Вони взяли на озброєння ідею Проссера, розробили самосинхронізуюче кодування (кожен символ вказує, скільки бітів йому потрібно) і встановили правила призначення букв, які можуть бути представлені по-різному в коді (приклад: "ä "Як окремий символ або" a + ¨ "). Вони успішно використали кодування для своєї операційної системи та представили його відповідальним. З цим FSS-UTF, відомий сьогодні як "UTF-8", був по суті завершеним.

UTF-8 - це 8-бітове кодування символів для Unicode. Абревіатура "UTF-8" розшифровується як "8-бітний формат перетворення набору символів", англійською мовою: "Універсальний формат перетворення наборів наборів символів". Один-чотири байти, кожен з яких складається з восьми бітів, складають машиночитаний двійковий номер. Це призначає кодування мовному символу або іншому текстовому елементу. Структура самосинхронізації та можливість генерувати 2 21 двійкові числа дозволяють безпомилково присвоїти кожній окремій мові та текстовому елементу всіх мов у світі.

UTF-8 у наборі символів Unicode: стандарт для всіх мов

Кодування UTF-8 - це формат перетворення в межах стандарту Юнікод. Міжнародний стандарт ISO 10646 визначає Unicode, що існує під позначенням "Універсальний набір символів", значною мірою. Розробники Unicode обмежують певні параметри для практичного використання. Стандарт призначений для забезпечення міжнародно рівномірного та сумісного кодування символів та елементів тексту. Коли він був представлений в 1991 році, Unicode визначив 24 сучасні системи письма та символи валюти для обробки даних. У червні 2017 року їх було 139.

Існують різні формати перетворень Unicode, або, скорочено, “UTF”, які можливі 1,114,112 Кодові точки відтворювати. Переважають три формати: UTF-8, UTF-16 та UTF-32. Інші кодування, такі як UTF-7 або SCSU, також мають свої переваги, але ще не змогли зарекомендувати себе.

Unicode розділений на 17 рівнів, кожен з яких містить 65 536 символів. Рівень складається з 16 стовпців і 16 рядків. Перший рівень, "Базовий багатомовний літак " (Рівень 0) включає значну частину систем письма, що використовуються в даний час у світі, а також розділові знаки, контрольні знаки та символи. В даний час використовується ще п’ять рівнів:

  • Додатковий багатомовний план (рівень 1): історичні системи письма, рідко використовувані символи
  • Додатковий ідеографічний план (рівень 2): рідкісні символи CJK ("китайська, японська, корейська")
  • Додатковий спеціальний літак (рівень 14): індивідуальні контрольні символи
  • Додаткова зона приватного користування - A (рівень 15): приватне користування
  • Додаткова зона приватного користування - B (рівень 16): приватне користування

Кодування UTF дозволяють отримати доступ до всіх символів Unicode. Відповідні властивості рекомендуються для певних областей застосування.

Альтернативи: UTF-32 та UTF-16

UTF-32 завжди працює з 32 бітами, тобто 4 байтами. Проста структура збільшує читабельність формату. У мовах, які в основному використовують латинський алфавіт і, отже, лише перші 128 символів, кодування займає набагато більше пам'яті, ніж потрібно (4 замість 1 байта).

UTF-16 зарекомендував себе як формат відображення в операційних системах, таких як Apple macOS та Microsoft Windows. Він також використовується в багатьох системах розробки програмного забезпечення. Це одна з найстаріших UTF, що все ще використовується. Його структура особливо підходить для кодування пам’яті нелатинських мовних символів. Більшість символів можуть бути представлені в 2 байтах (16 біт), лише у рідкісних символів довжина подвоюється до 4 байт.

Ефективний та масштабований: UTF-8

UTF-8 складається з до чотирьох бітових рядків, кожен складається з 8 бітів. Попередник ASCII однак складається з бітового ланцюжка з 7 бітами. Обидва кодування містять перші 128 кодованих символів конгруентний міцно. Персонажі, які в основному походять з англомовного світу, охоплюються одним байтом. Для мов з латинським алфавітом цей формат найбільш ефективно використовує пам’ять. Операційні системи Unix та Linux використовують його внутрішньо, однак UTF-8 відіграє найважливішу роль у зв'язку з цим Інтернет-програми, а саме при відображенні тексту у Всесвітній павутині або в електронних листах.

завдяки самосинхронізуюча структура розбірливість зберігається, незважаючи на змінну довжину на символ. Без обмежень Unicode UTF-8 (= 4 398 046 511 104) дозволить присвоєння символів. Через обмеження 4 байтів в Unicode, це фактично 2 21, що більш ніж достатньо. Навіть область Unicode все ще має порожні рівні для багатьох інших систем письма. Точне призначення запобігає перекриванню кодової точки, що обмежувало спілкування в минулому. Хоча UTF-16 та UTF-32 також дозволяють точно призначити, UTF-8 особливо ефективно використовує простір пам'яті в латинській системі письма і спроектований таким чином, що різні системи письма можуть співіснувати і покриватися без проблем. Це дозволяє одночасно, змістовно відображати їх у текстовому полі без проблем сумісності.

Основи: кодування та склад UTF-8

Кодування UTF-8 вражає, з одного боку, своєю зворотною сумісністю з ASCII, а з іншого боку, самосинхронізуючою структурою, яка полегшує розробникам виявлення джерел помилок згодом. Для всіх Символи ASCII використовує UTF лише 1 байт. Загальну кількість бітових рядків видно з перших цифр двійкового числа. Оскільки код ASCII складає лише 7 бітів, перша цифра - це Номер коду 0. Значення 0 заповнює простір пам'яті на повний байт і сигналізує про початок a Ланцюг без подальших ланцюгів. Наприклад, ім'я "UTF-8" буде виражене як двійкове число, закодоване в UTF-8, наступним чином:

01010101

01010100

01000110

00101101

00111000

Кодування UTF-8 призначає символи ASCII, як ті, що використовуються в таблиці, одному бітовому рядку. Усі наступні символи та символи в Unicode мають від двох до чотирьох 8-бітових рядків. Перший ланцюжок називається Почати байт, додаткові ланцюги є Подальші байти. Початок байтів з байтами продовження завжди починається з 11. Байти продовження, однак, завжди починаються з 10. Якщо ви шукаєте вручну певну точку коду, то ви впізнаєте початок кодованого символу за маркерами 0 та 11. Перший для друку -Байт символом є зворотний знак оклику:

11000010 10100001

Префікс кодування запобігає кодуванню іншого символу в ланцюжку байтів. Якщо потік байтів починається з середини документа, комп'ютер все одно буде відображати розбірливі символи правильно, оскільки навіть не відображатиме неповні символи. Якщо ви шукаєте початок символу, 4-байтове обмеження означає, що вам потрібно повернути максимум три ланцюжки байтів у будь-яку точку, щоб знайти початковий байт.

Інший елемент структурування: кількість одиниць на початку стартового байта позначає символ Довжина ланцюжка байтів. Як показано вище, 110xxxxx означає 2 байти. 1110xxxx означає 3 байти, 11110xxx - 4 байти. У Unicode присвоєне байтове значення відповідає номеру символів, що забезпечує лексичне упорядкування. Однак є лазівки. Область Unicode U + 007F - U + 009F включає непризначені контрольні номери. Стандарт UTF-8 не призначає там жодних символів для друку, лише команди.

Як вже згадувалося, кодування UTF-8 теоретично може об'єднати до восьми байтових ланцюжків. Однак Unicode передбачає максимальну довжину 4 байти. З одного боку, це має наслідком те, що ланцюжки байтів із 5 байтами або більше є недійсними за замовчуванням. З іншого боку, це обмеження відображає зусилля щодо кодування, наскільки це можливо компактний - Отже, з невеликим обсягом пам’яті - і якщо це можливо структурований карта. Основним правилом при використанні UTF-8 є те, що найкоротше можливе кодування слід використовувати. Наприклад, буква ä кодується за допомогою 2 байт: 11000011 10100100. Теоретично можна поєднати кодові точки для букви a (01100001) та символу діарези ¨ (11001100 10001000) для представлення ä: 01100001 11001100 10001000. Ця форма Однак UTF-8 вважається занадто довгим кодуванням, а тому заборонено.

Це правило є причиною того, що послідовності байтів, що починаються з 192 і 193, заборонені. Це тому, що вони потенційно представляють символи в діапазоні ASCII (0–127) з 2 байтами, які вже закодовані з 1 байтом.

Деякі діапазони значень Unicode не були визначені для UTF-8, оскільки вони доступні для сурогатів UTF-16. Огляд показує, які байти в UTF-8 під Unicode відповідно до Інтернет-інженерної робочої групи (IETF) як допустимий застосовувати (області, позначені зеленим, є дійсними байтами, області, позначені червоним, недійсні).

Перетворення шістнадцяткового Unicode в двійковий формат UTF-8

Комп’ютери читають лише двійкові числа, люди використовують десяткову систему. Інтерфейс між цими формами такий Шістнадцяткова система. Це допомагає показувати довгі розрядні ланцюги компактно. Він використовує цифри від 0 до 9 та літери від A до F і діє на основі числа 16. Як четвертий ступінь числа 2, шістнадцяткова система є кращою за десяткову систему для представлення восьмизначних байтових областей. Шістнадцяткова цифра позначає рядок з чотирьох («гризти») в межах октету. Таким чином, байт із восьми двійкових цифр може бути представлений лише двома шістнадцятковими цифрами. Юнікод використовує шістнадцяткову систему для Позиція персонажа описувати в межах власної системи. Звідси можна обчислити двійкове число і, нарешті, кодову точку UTF-8.

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