A globális digitális kommunikáció UTF-8 kódolása - IONOS

Aki angol nyelven vagy japán e-mailben olvas weboldalakat, nemcsak beszélni tudja ezeket a nyelveket, de valószínűleg az UTF-8 diadalmas előrelépésének is tanúja. Az "UTF-8" rövidítése a "8 bites UCS transzformációs formátum " és a világhálón a legelterjedtebb karakterkódolást jelenti. A nemzetközi Unicode szabvány az összes nyelvi karaktert és szövegelemet (szinte) az összes nyelven rögzíti a világon az informatikai feldolgozás érdekében. Az UTF-8 fő szerepet játszik az Unicode karakterkészletben.

kommunikáció

  1. Az UTF-8 kódolás fejlődése
    1. Az UTF-8 bevezetése előtti problémák
    2. Az UTF-8 létrehozása
  2. UTF-8 az Unicode karakterkészletben: minden nyelv szabványa
    1. Az alternatívák: UTF-32 és UTF-16
    2. Hatékony és méretezhető: UTF-8
  3. Alapok: UTF-8 kódolás és összetétel
  4. Unicode hexadecimális átalakítása UTF-8 binárisra
  5. UTF-8 a szerkesztőben
  6. Következtetés: Az UTF-8 kódolás javítja a nemzetközi kommunikációt

Az UTF-8 kódolás fejlődése

Az UTF-8 egy karakterkódolás. Minden létező Unicode karakterhez pontosan egy bizonyos bitsorozatot rendel, amely bináris számként is olvasható. Ez azt jelenti: az UTF-8 fix, bináris számot rendel az összes betűhöz, számhoz és szimbólumhoz egyre több nyelven. Nemzetközi szervezetek, amelyek számára az internetes szabványok fontosak, és amelyeket ennek megfelelően szeretnének kialakítani, azon dolgoznak, hogy az UTF-8-ot a kódolás vitathatatlan erejévé tegyék. Többek között az W3C valamint a Internetes mérnöki munkacsoport kiállni érte. Valójában még 2009-ben a világ legtöbb webhelye UTF-8 kódolást használt. 2018 márciusában a W3Techs jelentése szerint az összes létező webhely 90,9 százaléka használta ezt a karakterkódolást.

Az UTF-8 bevezetése előtti problémák

Különböző régiók, amelyek hasonló nyelvekkel és írási rendszerekkel rendelkeznek, mindegyiknek megvan a sajátja saját kódolási szabványok azért alakultak ki, mert különböző igényeik voltak. Angol nyelvű országokban például elegendő volt az ASCII kódolás, amelynek felépítése lehetővé teszi 128 karakter hozzárendelését egy számítógéppel olvasható karakterlánchoz. Az ázsiai betűtípusok vagy a cirill betűk azonban egyediabb karaktereket használnak. A német umlautok (például az ä betű) szintén hiányoznak az ASCII-ből. Ezenkívül a különböző kódolások hozzárendelését meg lehet másolni. Ennek eredményeként például egy orosz nyelven írt dokumentumot az amerikai számítógépen cirill betűk helyett az ezen a rendszeren rendelt latin betűkkel jelenítettek meg. Az ebből fakadó hancúrozás megnehezítette a nemzetközi kommunikációt figyelemre méltó.

Az UTF-8 létrehozása

A probléma megoldására Joseph D. Becker 1988 és 1991 között kifejlesztette az Unicode univerzális karakterkészletet a Xerox számára. 1992-től az informatikai ipar konzorcium is működött X/Megnyitás egy olyan rendszert keres, amely felváltaná az ASCII-t és kibővítené a karakter-repertoárt. Ennek ellenére a kódolásnak kompatibilisnek kell maradnia az ASCII-vel. Ezt a követelményt nem teljesítette az első kódolás, az úgynevezett UCS-2, amely egyszerűen átvitte a karaktereket 16 bites értékekbe. Az UTF-1 szintén kudarcot vallott, mert az Unicode-hozzárendelések részben ütköztek a meglévő ASCII-karakter-hozzárendelésekkel. Az ASCII-re beállított szerver néha hibás karaktereket ad ki. Ez jelentős problémát jelentett, mivel az angol nyelvű számítógépek többsége akkoriban dolgozott vele. A következő lépés volt Fájlrendszer biztonságos UCS átalakítási formátum (FSS-UTF) Dave Prosser, amely eltávolította az átfedést az ASCII karakterekkel.

Ugyanezen év augusztusában a tervezet szakmai körökben bejárta a köröket. A Unix társalapítói a számos Nobel-díjasról ismert Bell Labs-ban dolgoztak Ken Thompson és Rob Pike az operációs rendszer tervénél 9. Felvették a Prosser ötletét, kidolgoztak egy önszinkronizáló kódolást (minden karakter jelzi, hogy hány bitre van szükségük), és meghatározták a betűk hozzárendelésének szabályait, amelyek a kódban másképp ábrázolhatók (példa: "ä "Külön szimbólumként vagy" a + ¨ "). Sikeresen használták operációs rendszerük kódját és bemutatták a felelősöknek. Ezzel a ma "UTF-8" néven ismert FSS-UTF lényegében teljes volt.

Az UTF-8 egy 8 bites karakterkódolás az Unicode számára. Az "UTF-8" rövidítés jelentése "8 bites univerzális karakterkészlet átalakítási formátum", angolul: "8 bites univerzális karakterkészlet átalakítási formátum". Egy-négy bájt, mindegyik nyolc bitből áll, számítógéppel olvasható bináris számot alkot. Ez hozzárendeli a kódolást egy nyelvi karakterhez vagy más szövegelemhez. Az önszinkronizáló struktúra és a 2 21 bináris szám előállításának lehetősége lehetővé teszi a világ minden nyelvének minden nyelvének és szövegelemének összetéveszthetetlen összetételét.

UTF-8 az Unicode karakterkészletben: minden nyelv szabványa

Az UTF-8 kódolás a szabványon belüli transzformációs formátum Unicode. Az ISO 10646 nemzetközi szabvány meghatározza az Unicode-ot, ott "univerzális kódolt karakterkészlet" megjelöléssel, nagyrészt. Az Unicode fejlesztői korlátozzák bizonyos paramétereket a gyakorlati használat érdekében. A szabvány célja a karakterek és a szövegelemek nemzetközileg egységes és kompatibilis kódolásának biztosítása. Amikor az Unicode-ot 1991-ben bevezették, 24 modern írási rendszert és valutaszimbólumot határozott meg az adatfeldolgozáshoz. 2017 júniusában 139 volt.

Különböző Unicode transzformációs formátumok, vagy röviden „UTF” léteznek, amelyek 1 114 112 lehetségesek Kód pontok szaporodni. Három formátum érvényesült: UTF-8, UTF-16 és UTF-32. Más kódolásoknak, mint például az UTF-7 vagy az SCSU is megvannak az előnyei, de még nem tudták megalapozni magukat.

Az Unicode 17 szintre oszlik, mindegyik 65 536 karakterből áll. Egy szint 16 oszlopból és 16 sorból áll. Az első szint, a "Többnyelvű sík " (0. szint) a világon jelenleg használt írási rendszerek nagy részét, valamint írásjeleket, vezérlőjeleket és szimbólumokat tartalmaz. Jelenleg további öt szint van használatban:

  • Kiegészítő többnyelvű sík (1. szint): történelmi írásrendszerek, ritkán használt karakterek
  • Kiegészítő ideográfiai sík (2. szint): ritka CJK karakterek ("kínai, japán, koreai")
  • Kiegészítő speciális rendeltetési sík (14. szint): egyedi vezérlő karakterek
  • Kiegészítő magánhasználati terület - A (15. szint): magáncélú
  • Kiegészítő magánhasználati terület - B (16. szint): magáncélú használat

Az UTF kódolások hozzáférést biztosítanak az összes Unicode karakterhez. A megfelelő tulajdonságok bizonyos alkalmazási területekre ajánlottak.

Az alternatívák: UTF-32 és UTF-16

Az UTF-32 mindig 32 bittel, azaz 4 bájttal működik. Az egyszerű felépítés növeli a formátum olvashatóságát. Azokban a nyelvekben, amelyek elsősorban a latin ábécét és így csak az első 128 karaktert használják, a kódolás a szükségesnél sokkal több tárhelyet foglal el (4 bájt 1 bájt helyett).

Az UTF-16 megjelenítési formátumként bevált olyan operációs rendszerekben, mint az Apple macOS és a Microsoft Windows. Számos szoftverfejlesztési keretben is használják. Ez az egyik legrégebbi UTF, amelyet még mindig használnak. Felépítése különösen alkalmas nem latin nyelvű karakterek memóriatakarékos kódolására. A legtöbb karakter 2 bájtban (16 bites) ábrázolható, csak ritka karakterekkel megduplázódik a hossza 4 bájtra.

Hatékony és méretezhető: UTF-8

Az UTF-8 áll legfeljebb négy bit húr, mindegyik 8 bitből áll. Az előd ASCII azonban egy bitből álló, 7 bites karakterláncból áll. Mindkét kódolás az első 128 kódolt karaktert tartalmazza egybevágó határozottan. A főleg az angol nyelvterületről érkező karaktereket egy-egy bájt fedi. A latin ábécét használó nyelvek esetében ez a formátum használja a memóriát a leghatékonyabban. A Unix és a Linux operációs rendszerek belsőleg használják, azonban az UTF-8 a legfontosabb szerepet tölti be ezzel kapcsolatban Internetes alkalmazások, mégpedig akkor, amikor szöveget jelenít meg a világhálón vagy e-mailekben.

köszönhetően a önszinkronizáló szerkezet az olvashatóság a karakterenként változó hosszúság ellenére is megmarad. Unicode korlátozások nélkül az UTF-8 (= 4 398 046 511 104) lehetővé teszi a karakterek hozzárendelését. Az Unicode 4 bájtos korlátozása miatt ez gyakorlatilag 2 21, ami több mint elegendő. Még az Unicode területnek is vannak üres szintjei sok más írórendszer számára. A pontos megbízás megakadályozza a kódpont átfedéseket, amelyek a múltban korlátozták a kommunikációt. Míg az UTF-16 és az UTF-32 lehetővé teszi a pontos hozzárendelést, az UTF-8 különösen hatékonyan használja a latin írásrendszer memóriaterületét, és úgy lett kialakítva, hogy a különböző írórendszerek egymás mellett létezhessenek és minden gond nélkül lefedhessék őket. Ez lehetővé teszi egyidejű, értelmes megjelenítést a szövegmezőben kompatibilitási problémák nélkül.

Alapok: UTF-8 kódolás és összetétel

Az UTF-8 kódolás egyrészt az ASCII-vel való visszamenőleges kompatibilitásával, másrészt egy önszinkronizáló struktúrával hat, amely megkönnyíti a fejlesztők számára a hibaforrások utólagos azonosítását. Mindenkinek ASCII karakterek UTF-et használ csak 1 bájt. A bit húrok teljes száma a bináris szám első számjegyéből látható. Mivel az ASCII kód ​​csak 7 bit, az első számjegy a Kódszám 0. A 0 teljes bájtig kitölti a memóriaterületet, és jelzi az a kezdetét Lánc utólánc nélkül. Például az "UTF-8" nevet bináris számként fejezzük ki, amelyet az UTF-8 kódol az alábbiak szerint:

01010101

01010100

01000110

00101101

00111000

Az UTF-8 kódolás a táblázatban használtakhoz hasonló ASCII karaktereket rendel egyetlen bit karakterlánchoz. Az Unicode összes alábbi karaktere és szimbóluma két-négy 8 bites karakterlánccal rendelkezik. Az első láncot nevezzük Kezdje a bájtot, további láncok vannak Követési bájtok. A folytatódó bájtok kezdete mindig 11-vel kezdődik. A folytatódó bájtok azonban mindig 10-vel kezdődnek. Ha kézzel keres egy adott pontot a kódban, akkor a kódolt karakter kezdetét a 0 és 11 jelzők ismerik fel. -Bájt karakter a fordított felkiáltójel:

11.000010 10.100001

Az előtag-kódolás megakadályozza egy másik karakter kódolását egy bájtláncban. Ha a bájtfolyam a dokumentum közepén kezdődik, a számítógép továbbra is helyesen jeleníti meg az olvasható karaktereket, mivel nem is fogja feltérképezni a hiányos karaktereket. Ha egy karakter kezdetét keresi, a 4 bájtos korlát azt jelenti, hogy a kezdő bájt megtalálásához bármikor vissza kell térnie legfeljebb három bájt láncra.

Egy másik strukturáló elem: A kezdő bájt elején lévők száma jelöli a A bájtlánc hossza. Amint fent látható, a 110xxxxx 2 bájtot jelent. Az 1110xxxx 3 bájtot jelent, a 11110xxx 4 bájtot jelent. Az Unicode-ban a hozzárendelt bájtérték megegyezik a karakterszámmal, ami lehetővé teszi a lexikális rendezést. Vannak azonban kiskapuk. Az Unicode terület U + 007F - U + 009F hozzárendeletlen kontrollszámokat tartalmaz. Az UTF-8 szabvány nem rendel hozzá nyomtatható karaktereket, csak parancsokat.

Mint említettük, az UTF-8 kódolás elméletileg akár nyolc bájtos láncot is összefűzhet. Az Unicode azonban maximum 4 bájt hosszúságot ír elő. Ez egyrészt azzal a következménnyel jár, hogy az 5 vagy több bájtos bájtláncok alapértelmezés szerint érvénytelenek. Másrészt ez a korlátozás a kódolásra irányuló erőfeszítéseket tükrözi kompakt - Tehát kevés memóriaterülettel - és ha lehetséges strukturált térkép. Az UTF-8 használatakor alapvető szabály, hogy a a lehető legrövidebb kódolás kell használni. Például az ä betűt 2 bájt segítségével kódolják: 11000011 10100100. Elméletileg lehetőség van az a betű (01100001) és a diäresis szimbólum ¨ (11001100 10001000) kódpontjainak összekapcsolására, hogy az ä: 01100001 11001100 10001000 legyen. Ez az űrlap Az UTF-8 azonban túl hosszú kódolásnak tekinthető, ezért nem engedélyezett.

Ez a szabály az oka annak, hogy a 192-es és 193-as kezdetű bájtsorozatok nem engedélyezettek. Ugyanis az ASCII tartományban (0–127) szereplő karaktereket potenciálisan 2 bájttal reprezentálják, amelyek már 1 bájttal vannak kódolva.

Néhány Unicode-értéktartományt nem határoztak meg az UTF-8 számára, mert elérhetők az UTF-16 helyettesítőihez. Az áttekintés megmutatja, hogy az UTF-8 mely bájtjai vannak az Unicode alatt az Internet Engineering Task Force (IETF) szerint megengedhető alkalmazni (a zöld színnel jelölt területek érvényes bájtok, a pirosral jelölt területek érvénytelenek).

Unicode hexadecimális átalakítása UTF-8 binárisra

A számítógépek csak bináris számokat olvasnak, az emberek tizedes rendszert használnak. Ez egy interfész ezek között az űrlapok között Hexadecimális rendszer. Ez segít a hosszú bitláncok kompakt megjelenítésében. A 0 és 9 közötti számokat, valamint az A és az F betűket használja, és a 16 szám alapján működik. A 2 negyedik hatványaként a hexadecimális rendszer alkalmasabb, mint a tizedes, a nyolcjegyű bájt tartományok ábrázolására. A hexadecimális számjegy az oktetten belül egy négyes húr („nibble”). A nyolc bináris számjegyű bájt tehát csak két hexadecimális számjeggyel ábrázolható. Unicode a hexadecimális rendszert használja a Karakter pozíciója leírni a saját rendszerén belül. Ebből kiszámítható a bináris szám és végül az UTF-8 kódpont.

Először a bináris számot kell átalakítani a hexadecimális számból. Ezután illeszti a kódpontokat az UTF-8 kódolás struktúrájába. A strukturálás megkönnyítése érdekében használja a következőket Áttekintés, amely megmutatja, hogy hány kódpont illeszkedik egy bájtláncba, és melyik struktúrára melyik Unicode értéktartományban számíthat.