SzámítógépekProgramozás

UTF-8 karakterkódolás

A Unicode szinte minden létező karakterkészletet támogat. A legjobb kódolás Unicode karakterkészlet esetén az UTF-8 kódolás. Ez biztosítja az ASCII-vel való kompatibilitást, az adatvesztéssel szembeni ellenállást, a hatékonyságot és a feldolgozás egyszerűségét. De mindent rendben.

A kódolás formái

Számítógépek számokkal működnek, nemcsak absztrakt matematikai objektumokként, hanem rögzített méretű információs bájtok és 32 bites szavak tárolásának és feldolgozásának kombinációiként. A kódolási szabványnak ezt figyelembe kell vennie, amikor meghatározza, hogy a karaktereket milyen számok képviselik .

Számítógépes rendszerekben az egész számok 8 bites (1 byte), 16 vagy 32 bites memóriacellákban vannak tárolva. Minden Unicode kódolási forma meghatározza, hogy a memóriacellák melyik sorozata egy adott karakternek megfelelő egész számot képvisel. A szabvány három különböző formátumot tartalmaz a Unicode karakterek kódolásához: 8, 16 és 32 bites blokkok. Ennek megfelelően UTF-8-nak, UTF-16-nak és UTF-32-nek nevezik őket. Az UTF név Unicode konverziós formátumot jelent. A kódolás mindhárom formája egyenlő módon képviseli a Unicode karaktereket, előnyei vannak a különböző alkalmazásokban.

Ezek a kódolások felhasználhatók a Unicode szabvány összes karakterének megjelenítésére. Így teljes mértékben kompatibilisek a megoldások különböző okokból, különböző kódolási formák használatával. Minden egyes kódolás egyedülálló módon a másik kettő közül bármelyikké alakítható át adatvesztés nélkül.

A kivetés elve

Minden Unicode kódolási formát úgy terveztek meg, hogy figyelembe vegyék a részleges átfedések elfogadhatatlanságát. Például a Windows 932 egy vagy két bájtnyi kódot generál. A szekvencia hossza az első bájttól függ, ezért a két byte és az egy bájt egymást követő byte-értékei nem metszenek. Mindazonáltal az egy byte és a szekvencia záró byte értékei megegyezhetnek. Ez azt jelenti például, hogy amikor keres a D karaktert (kód: 44), hibásan megtalálhatja a "D" karakter (kód: 84 44) két byte-os sorának második részébe való bejutását. Annak megállapításához, hogy melyik sorrend megfelelő, a programnak figyelembe kell vennie az előző bájtokat.

A helyzet bonyolultabbá válik, ha a mester és a záró byte megegyezik. Ez azt jelenti, hogy a kétértelműség megfordításához fordított keresés történik a szöveg kezdetéig vagy a kód egyértelmű sorrendjéig. Ez nem csak nem hatékony, de nem védett a lehetséges hibákkal szemben, mert egy rossz bájt elegendő ahhoz, hogy a teljes szöveget olvashatatlanná tegye.

Az Unicode konverziós formátum elkerüli ezt a problémát, mert az információs tárhely vezető, utólagos és egyetlen egységének értékei nem egyeznek. Emiatt az összes Unicode kódolás alkalmas arra, hogy megkeresse és összehasonlítsa, soha ne adjon hibás eredményt a karakterkód különböző részeinek egybeesése miatt. Az a tény, hogy ezek a kódolási formák megfelelnek a nem-hozzárendelés elvének, megkülönbözteti őket más több bájtos kelet-ázsiai kódolásoktól.

Az Unicode kódolások nem metszéspontjának másik aspektusa, hogy minden karakternek egyértelműen meghatározott határa van. Ez kiküszöböli annak szükségességét, hogy beolvasni egy előre meghatározott számú korábbi karaktert. A kódolások e tulajdonságát néha önszinkronizálásnak nevezik. Egy kódegység torzítása csak egy karakter torzulását eredményezi, és a környező szimbólumok érintetlenül maradnak. A 8 bites konvertálási formátumban, ha a mutató a 10xxxxxx-ral kezdődő bájtra utal (bináris kódolással), akkor a karakter kezdetéhez 1-3 fordított átmenetre van szükség.

következetesség

A Unicode konzorcium teljes mértékben támogatja a 3 kódolási formát. Fontos, hogy ne ellenezzük az UTF-8-at és a Unicode-ot, mert az összes konverziós formátum a Unicode karakterkódolási formák egyformán legitim megvalósítása.

Byte-orientáció

Az UTF-32 szimbólum megjelenítéséhez egy 32 bites kódegységre van szükség, amely megfelel a Unicode kódnak. UTF-16 - egy-két 16 bites egység. Az UTF-8 legfeljebb 4 bájtot használ.

Az UTF-8 kódolása az ASCII alapú byte-orientált rendszerek kompatibilitására lett kifejlesztve. A meglévő szoftverek és informatikai gyakorlatok többsége régóta a szimbólumok ábrázolására támaszkodik egy byte sorozatban. Számos protokoll az ASCII kódolás változatlanságától függ, és speciális kontroll karaktereket használ vagy elkerül. A Unicode ilyen helyzetekre történő adaptálásának egyszerű módja a 8 bites kódolás, amely egyetlen ASCII karakter vagy vezérlő karakterrel megegyező Unicode karaktereket képvisel. Ehhez az UTF-8 kódolásra van szükség.

Változó hosszúság

Az UTF-8 olyan változó hosszúságú kódolás, amely 8 bites információ tároló egységekből áll, amelyek nagy rendű bitjei azt jelzik, hogy az egyes byte-ok sorozata melyik része. Az egyik értéktartomány a kódsor első elemére van fenntartva, a másik a következő elemek esetében. Ez biztosítja a diszjunkt kódolást.

ASCII

Az UTF-8 kódolás teljes mértékben támogatja az ASCII kódokat (0x00-0x7F). Ez azt jelenti, hogy az U + 0000-U + 007F Unicode karaktereket egyetlen, 0x00-0x7F UTF-8 byte-ba konvertálják, így az ASCII-ból nem lehet megkülönböztetni. Továbbá, a kétértelműség elkerülése érdekében a 0x00-0x7F értékeket a Unicode karakterek bármelyik bájtjában már nem használják. Az ASCII-n kívüli nem-ideográfiai szimbólumok kódolására két bájtot használunk. Az U + 0800-U + FFFF tartomány szimbólumait három bájt képviseli, és az U + FFFF-nél nagyobb kódokkal rendelkező továbbiakhoz négy bájt szükséges.

Alkalmazási kör

Az UTF-8 kódolása általában a HTML protokollban előnyös és hasonló.

Az XML lett az első szabvány teljes UTF-8 kódolással. A szabványosításban részt vevő szervezetek is ajánlják. Az ASCII karaktereken kívüli URL-címek támogatásának problémája megoldódott, amikor a W3C konzorcium és az IETF mérnöki csoportja beleegyezett abba, hogy minden URL-t kizárólag az UTF-8-ban kódoljon.

Az ASCII-vel való kompatibilitás megkönnyíti az új szoftverre való átállást. Az UTF-8-mal a legtöbb szövegszerkesztő működik, beleértve a Windows operációs rendszer JEdit, Emacs, BBEdit, Eclipse és Notepad programját. A Unicode kódolás más formája nem büszkélkedhet az ilyen eszközök támogatásáról.

A kódolás előnye, hogy egy byte sorozatot tartalmaz. Az UTF-8 karakterláncokkal egyszerűen dolgozhat C-ben és más programozási nyelvekben. Ez az egyetlen olyan kódolási forma, amely nem igényli a BOM byte-ok sorrendjének jelölését vagy a kódolási nyilatkozatot XML-ben.

self-szinkronizálás

A 8 bites karakterfeldolgozást használó környezetben a többi többbájtos kódoláshoz képest az UTF-8 a következő előnyökkel rendelkezik:

  • A kódsor első bájtja információt tartalmaz a hossza alapján. Ez növeli a közvetlen keresés hatékonyságát.
  • A karakter kezdetét egyszerűsíti, mivel a kezdeti bájt egy meghatározott értéktartományra korlátozódik.
  • A bájtértékek metszéspontja nincs.

Az előnyök összehasonlítása

Az UTF-8 kódolás kompakt. De ha a kelet-ázsiai karakterek kódolására (kínai, japán, koreai, kínai karakterek) kódolnak, 3 bájtos sorozatokat használnak. Az UTF-8-kódolás is rosszabb, mint a feldolgozás sebességével történő kódolás egyéb formái. A bináris karakterláncok szortírozása ugyanazt eredményezi, mint egy Unicode bináris rendezést.

Karakterkódolási séma

A karakterkódolási séma egy karakterkódoló formából és egy kódegység byte-by-pixel elrendezéséből áll. A kódolási séma Unicode szabvány szerinti meghatározásához a kezdeti bájt-sorrend (BOM, Byte order mark) használatát biztosítjuk.

Amikor bekapcsolja a BOM-ot az UTF-8-ban, akkor a címke funkciója csak a kódolási űrlap használatával korlátozott. Az UTF-8-ban lévő byte-sorrend meghatározásának problémája nem, mivel a kódolási egység mérete egy byte. A kódolási formanyomtatvány használata sem kötelező, sem ajánlott. BOM fordulhat elő a bájt sorrendjét használó más kódolással vagy az UTF-8 kódoló aláírással konvertált szövegekben. Ez egy 3 bájt EF 16 BB 16 BF 16 sorozata.

Az UTF-8 kódolás beállítása

A HTML-ben az UTF-8 kódolás a következő kóddal van beállítva:

fej

˂meta http-equiv = "Tartalomtípus" content = "text / html; charset = utf-8" ˃

PHP-ben az UTF-8 kódolás a fejléc () függvény használatával történik a fájl elején a hiba kimeneti szintjének beállítása után:

˂? Php

Error_reporting (-1);

Fejléc ("Tartalom-típus: szöveg / html; charset = utf-8");

A MySQL adatbázisokhoz való csatlakozáshoz az UTF-8 kódolása az alábbiak szerint történik:

˂? Php

Mysql_set_charset ('utf8');

A CSS fájlokban az UTF-8 karakterkódolás a következő:

@charset "utf-8";

Mindenféle fájl mentésekor az UTF-8 kódolás a BOM nélkül van kiválasztva, különben a webhely nem fog működni. Ehhez a DreamWeave programban válassza a "Módosítások - Oldal tulajdonságai - Cím / kódolás" menüpontot, módosítsa a kódolást az UTF-8-ra. Ezután be kell töltenie az oldalt, törölni kell a "Connect Unicode Signatures (BOM)" jelölőnégyzetet, és érvényesíteni kell a módosításokat. Ha az oldalon vagy az adatbázisban lévő szövegeket egy másik kódolási formában beírta, újra be kell írni, vagy újra kell kódolni. Szabályszerű kifejezések használata esetén kötelező az u módosító használata.

A fájlt az UTF-8 kódolással is elmentheti a Windows Notepadon. A "Fájl - Mentés másként ..." menüpont kiválasztása után állítsa be a szükséges kódolási űrlapot, és mentse a fájlt az UTF-8 kódolásába.

A Notepad ++ szövegszerkesztőben, ha a kódolás eltér az UTF-8-tól, változtassa meg a kódolást és mentse el UTF-8 kódolással a "Konvertálás UTF-8-hoz BOM nélkül" menüpont alatt.

Nincs alternatíva

A globalizáció kontextusában, amikor a politikai és nyelvi határok elmosódnak, a helyi jellemzőkkel rendelkező karakterkészletek kevésbé hasznosak. A Unicode az egyetlen karakterkészlet, amely támogatja az összes lokalizációt. És az UTF-8 egy példa a Unicode helyes végrehajtására, amely:

  • Támogatja az eszközök széles skáláját, beleértve az ASCII kódolással való kompatibilitást;
  • Ellenáll az adatvesztésnek;
  • Könnyű és hatékony feldolgozás;
  • Nem függ a platformtól.

Az UTF-8 megjelenésével a kódolás vagy a karakterkészlet formájának jobb megértése értelmetlenné vált.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 hu.birmiss.com. Theme powered by WordPress.