UTF-8 кодиране на глобална цифрова комуникация - IONOS

Всеки, който чете уебсайт на английски или японски имейл, не само може да говори тези езици, но и най-вероятно става свидетел на триумфалния напредък на UTF-8. „UTF-8“ е съкращението за „8-битов формат за преобразуване на UCS " и означава най-широко разпространеното кодиране на знаци в световната мрежа. Международният стандарт Unicode записва всички езикови символи и текстови елементи на (почти) всички езици в света за обработка на EDP. 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/Open търси система, която трябва да замени ASCII и да разшири репертоара на героите. Независимо от това, кодирането трябва да остане съвместимо с ASCII. Това изискване не е изпълнено от първото кодиране, наречено UCS-2, което просто прехвърля номерата на символите в 16-битови стойности. UTF-1 също се провали, защото Unicode заданията частично се сблъскаха със съществуващите ASCII задания на символи. Сървър, който е настроен на ASCII, понякога извежда неправилни символи. Това беше значителен проблем, тъй като по това време повечето англоговорящи компютри работеха с него. Следващият ход беше в Формат за безопасна UCS файлова система за преобразуване (FSS-UTF) от Дейв Просър, което премахна припокриването с ASCII символи.

През август същата година проектът направи обиколки в професионалните среди. Съоснователите на Unix са работили в Bell Labs, известна с многобройните носители на Нобелова награда Кен Томпсън и Роб Пайк в плана на операционната система 9. Те възприемат идеята на Prosser, разработват самосинхронизиращо се кодиране (всеки знак показва колко бита му са необходими) и определят правила за присвояване на букви, които могат да бъдат представени по различен начин в кода (пример: "ä "Като отделен символ или" a + ¨ "). Те успешно използваха кодирането за своята операционна система и го представиха на отговорните. С това FSS-UTF, известен днес като "UTF-8", беше по същество завършен.

UTF-8 е 8-битово кодиране на символи за Unicode. Съкращението „UTF-8“ означава „8-битов формат за преобразуване на универсален набор от символи“, на английски: „Универсален формат за преобразуване на набор от 8-битови символи“. Един до четири байта, всеки от които се състои от осем бита, съставлява компютърно четимо двоично число. Това присвоява кодирането на езиков символ или друг текстов елемент. Самосинхронизиращата се структура и потенциалът за генериране на 2 21 двоични числа позволяват безпогрешно присвояване на всеки един език и текстов елемент на всички езици в света.

UTF-8 в набора от символи Unicode: стандарт за всички езици

UTF-8 кодирането е формат за трансформация в рамките на стандарта Unicode. Международният стандарт ISO 10646 дефинира до голяма степен Unicode под наименованието „Universal Coded Character Set“. Разработчиците на Unicode ограничават определени параметри за практическа употреба. Стандартът има за цел да осигури международно еднакво и съвместимо кодиране на символи и текстови елементи. Когато Unicode беше представен през 1991 г., той определи 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. Първият отпечатващ още -Байт символът е обратният удивителен знак:

11.000010 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 според Internet Engineering Task Force (IETF) като допустимо се прилага (областите, маркирани със зелено са валидни байтове, областите, маркирани с червено, са невалидни).

Преобразуване от Unicode шестнадесетичен в двоичен UTF-8

Компютрите четат само двоични числа, хората използват десетична система. Това е интерфейс между тези форми Шестнадесетична система. Помага за компактно показване на дълги битови вериги. Той използва цифрите от 0 до 9 и буквите от A до F и действа въз основа на числото 16. Като четвърто степен на 2, шестнадесетичната система е по-подходяща от десетичната система за представяне на осемцифрени байтови диапазони. Шестнадесетичната цифра означава низ от четири („хапка“) в рамките на октета. Следователно байт с осем двоични цифри може да бъде представен само с две шестнадесетични цифри. Unicode използва шестнадесетичната система за Позиция на герой да описва в собствената си система. От това може да се изчисли двоичното число и накрая кодовата точка UTF-8.

Първо, двоичното число трябва да се преобразува от шестнадесетичното число. След това поставяте кодовите точки в структурата на кодирането UTF-8. Използвайте следното, за да улесните структурирането Общ преглед, което показва колко кодови точки се вписват в байтова верига и коя структура можете да очаквате в кой диапазон от стойности на Unicode.