Rostislav Chebykin

A technikai részleteket az RFC 3629 (STD 63) és a Unicode szabvány (3.9. És itt az UTF-8 használatának gyakorlati oldaláról beszélünk.

Nézd meg a számítógép "Symbol Table" -t. Az UTF-8 kódolással közvetlenül szedhet szimbólumot a táblából, és közvetlenül beillesztheti a dokumentumba. Ha szerzői, szerzői vagy integrált jelre van szüksége - nem kell speciális betűtípust keresnie, grafikus formában ábrázolnia ezt a karaktert, vagy még több trükköt feltalálni. Az UTF-8 kódolást bármilyen karaktert, legyen az egy frakció ⅓ vagy kínai karaktert, akkor a dokumentum ugyanúgy, mint a latin „A” betű, az orosz „Y” vagy „+” jel.

A weboldalak fejlesztői kényszerültek ilyen nehézkes helyettesítésre, mivel az UTF-8 kódolás még nem létezett. De most elfelejtheti mind a helyettesítés, mind a régi kódolást.

Miután megvitatták az UTF-8 előnyeit, érdemes lenne beszélni a kódolás hátrányairól. Képzeld el, hogy nem. Csak mítoszok és legendák vannak, csakúgy, mint a mohó konzervatívok és a frottáros retrográd által elterjedt pletykák és sejtelmek. Sok évvel ezelőtt történtek bizonyos hiányosságok, de most elfelejtették a feledést.


A böngészők rosszul támogatják az UTF-8-at?

Azt mondják, hogy egyes felhasználóknak még van olyan régi böngészőjük, amely nem jelenít meg oldalakat az UTF-8-ban. Ez teljesen értelmetlen. Még az Internet Explorer 4 és a Netscape 4 is, amelyet senki nem használ sokáig, tökéletesen értik az UTF-8-ot. És modernbb böngészők - és még inkább.

Az UTF-8 egyáltalán nem "newfangled" vagy "fiatal" kódolás, hanem több mint tíz éve sikeresen használják. Ha egy fejlesztő eddig nemrég tudomást szerzett erről, vagy eddig nem is tudott róla - ez a képesítés hiánya, és nem a kódolás.


Az UTF-8-nak vannak problémák a webszerveren?

"Az UTF-8-ban egy oldalt helyeztek el a szerveren, és megjelenik a krakkyabrami-val" - így néha kezdők panaszkodnak. Valójában ez a probléma nagyon eltérő kódolásokkal történik, és nem kapcsolódik az UTF-8 bármely sajátosságához. Itt a gond az, hogy az oldal ugyanabban a kódolásban készül, és a HTTP fejlécében lévő kiszolgáló egy másikat mond. Szükség van arra, hogy a kiszolgáló beállításait a weblapok tényleges kódolásához igazítsuk. Ismétlem, hogy ezt minden kódolással meg kell tenni.


Az UTF-8-as fájlok sok helyet foglalnak el?

Azt mondják, hogy az UTF-8-as dokumentumok kétszer akkoraak, mint a régi kódolásoknál. Ez egy mítosz a "Hallottam a csengést, de nem tudom, hol van". Valójában - csak egyszer nincs szükség. Például, ha a dokumentum csak ASCII karaktereket tartalmaz (betűk, számok, írásjelek, stb ...) - a UTF-8 akkor lesz pontosan ugyanannyi bájtot, mint bármely más. Ha a dokumentum tartalmaz egyetlen betű az orosz ábécé és egyéb karakterek (Ön is egyetért, ez elég ritka) -, akkor UTF-8, akkor valóban kétszer annyi. És ha például az orosz és az arab betűk - az UTF-8-ban kétszer kevesebb lesz, mint például a Windows 1251 vagy az Asmo-708.

Az éppen olvasott, az UTF-8-ban kódolt oldal 35 kilobájtot foglal el. Ha például a Windows 1251-es verzióját lefordítja, 26 kilobájtra fog fordulni (lásd magát). Egyébként az oldalak összehasonlításakor nézze meg, mennyire könnyebben olvassa el a kódot az UTF-8-ban.

Azok, akik törődnek a „tömeg” kell az első helyen elengedni elavult kód attribútumok HTML (például cellpadding vagy valign), és a helyettesítő karakterek azok számára, akik nem kell őket (például — egy hosszú kötőjel vagy   egy feloldhatatlan üreghez). Sőt, néha jön a szenilitás - az egyik nyugszik: „nem fogok oldalakat UTF-8, mert ettől a növekedés” - és ő így farag kód szörnyű attribútumok és helyettesítéseket, amelyek nélkül nem lenne ötször rövidebb .


A szerver-alapú programozási nyelvek és adatbázisok nem támogatják az UTF-8-at?

Valaki azt fogja mondani: "Mindez jó, mindaddig, amíg statikus weboldalakkal foglalkozunk. De ha PHP-t és MySQL-t használunk, jobb, ha elfelejtjük az UTF-8-at ". Ez szintén nem igaz. Az ősi időkben valójában néhány programozási nyelv és adatbázis-kezelő rendszer nem tudta, hogyan kell együttműködni az UTF-8-mal. De most minden modern programozási nyelv és adatbázis kiválóan kapcsolódik ehhez a kódoláshoz. És nem a modern nyelvek és bázisok, hogy ne használhassanakóIT: minél régebbi a rendszered, annál könnyebb a hackelés.

Saját weboldalon láthatja a program eredményeit a PHP 4-en, amely a kötőjeleket szavakba helyezi. Szöveget kell beírnia az UTF-8-ban, és ugyanazt a szöveget írja elő az UTF-8-ban, de elválasztással. By the way, maga a forráskódóA program az UTF-8-ban is megjelenik.

A Perl-ben is szerepelhet egy amatőr szkript, amely a szöveg betűinek függvényében számolja a függőleges löketek számát. A parancsfájl futtatásakor paraméterként kell átadnia egy szövegfájlt az UTF-8 kódolásban, például: palki.pl file.txt. Ismét a forgatókönyvet is képviselik az UTF-8-ban.

Az egyetlen probléma a szerverprogramokkal, hogy sokuk alapértelmezés szerint nem az UTF-8-hoz van konfigurálva, hanem más kódolásokhoz. Hát, állítsd újra; Nem vagyunk kisgyermekek veled, így bárhol és mindenhol csak az alapértelmezett beállításokat használhatjuk.


A keresőmotorok nem működnek megfelelően az UTF-8-mal?

Azt is hallom, hogy a keresőmotorok "megbotlik" az UTF-8-ról. Ez az információ ismét nyolc évig elavult. Itt van például a "Yandex" kereső:

Győződjön meg róla, hogy mindent megtalál, amit szeret, a személyes oldalamon, ahol egyébként a munkája "nemcsak az UTF-8-t" bonyolítja ", hanem a szavak elválasztását is.

Így nincs ellenjavallat az UTF-8 széles körű használatához. Azok, akik másképp gondolkodnak, csak lemaradnak az életről.


Ha az UTF-8-at nem kell használni

Természetesen vannak olyan esetek, amikor az UTF-8 legjobb kódolása még mindig nem kívánatos. Bár ezek egyáltalán nem azok a helyzetek, amelyek megfélemlítik a fenti vitatott mítoszokat.

Először is, néha nem kell új dokumentumot létrehoznunk, hanem módosítanunk egy meglévő dokumentumot. Általában ilyen esetekben nincs értelme átalakítani egy meglévő dokumentumot UTF-8 kódolással, ezért szerkeszteni kell azt a kódolást, amelyben megjelenik.

Másodszor, néha a webhely munkáját a szoftvermag (az úgynevezett "motor") biztosítja, amely nem tudja, hogyan kell az UTF-8-mal együttműködni. Ebben a helyzetben persze meg kell fontolnunk, hogy lehet-e a "motor" kijavítását vagy kicserélni egy másikkal. De ez nem mindig lehetséges. Egyes szoftvermagok funkcionális előnyökkel járnak, amelyek miatt összeegyeztethetők az elavult kódolással.

Remélem, hogy további ajánlások hasznosak lesznek az UTF-8-hoz való munkavégzés során.

A Byte Order Mark (BOM) három szolgáltatás bájt, amely automatikusan a dokumentum elejére íródik, és jelzi, hogy az UTF kódolásban van. A részletek megtalálhatók a kézikönyvben, és a gyakorlati oldal az, hogy ezek a szolgáltatás bájtok az UTF-8-ban nem feltétlenül szükségesek, de ezzel ellentétben félrevezethetnek néhány régi böngészőt és más programot.


Egyszerű parancsikonok testreszabása speciális karakterekhez

Természetesen, amikor szükségem van egy ritkán használt szimbólumra - a "yus", egy arcra vagy egy hieroglifára, - utalok a "Symbol Table" -ra.
Adja meg a kódolást, ahol szükséges

Győződjön meg arról, hogy a webszerver a megfelelő oldalkódolást jelzi. Ha ez nem így van, lépjen kapcsolatba a szerver rendszergazdájával, vagy olvassa el a súgó anyagokat a kódolás beállításával kapcsolatban.

Vannak olyan webhelyek hosting szolgáltatások (hosting), amelyek "szorosan kötődnek" azokhoz, akik kódolnak, és nem engedélyezik a webhelytulajdonosoknak más kódolás használatát. Az ilyen hosting nem kapcsolatotóum. Milyen kódolással, hogy oldalakat készítsen - a webhely fejlesztőjének megoldást kell keresnie, nem pedig a forgalomba helyezését.

A HTML-ben gyakran érdemes metaelemet használni:

Vannak különböző vélemények a meta használatáról a kódolás megadásához. Egyszer azt hittem, hogy ez az elem sokkal károsabb, mint hasznos. Számos tanulmány és saját tapasztalatom azonban arra kényszerített, hogy átgondolhassam álláspontomat. A meta alkalmazására vagy használatának hiányára - minden egyes betonhelyre külön-külön kell megoldani.

Bármelyik kódolást is használjuk, emlékeznünk kell arra, hogy a böngészők csak azokat a karaktereket jelenítik meg, amelyek a számítógépen telepített betűtípusok között szerepelnek. A "szimbólumtáblázat" pontosan megmutatja azokat. A szabványos Windows betűtípusok listája a "Könyvtárak" részben található.

A Unicode-ban számos más szimbólum található - például rúnák, glagolitikus betűk, különböző ikonok és piktogramok. De nem lesznek beilleszthetők a dokumentumba: a felhasználók túlnyomó többségében nincs olyan betűtípus, amelyben ezek a karakterek jelen vannak. Itt még az UTF-8 is, minden előnyével, nem tud segíteni. Az ilyen karaktereket bitképek formájában kell elhelyezni (mint itt), vagy keressenek más megoldásokat.

Számos más "egzotikus" karakter általában elérhető a felhasználók számítógépein, de a böngészőnek segítenie kell a kívánt betűtípust. Például a régi szláv betűk vagy matematikai jelek (∀ és így tovább) megjelenítéséhez - a CSS-ben a "Lucida Sans Unicode" betűtípust határoztam meg.

Az UTF-8 javára az egyik ritka mítosz szerint ez a kódolás arra kényszeríti a számítógépet, hogy olyan karaktereket jelenítsen meg, amelyek nem érhetők el bármely régi kódolásban. Azonban nincsenek csodák: ha nincs olyan betűtípusa a számítógépeden, amely háromdimenziós kulcsot tartalmaz, akkor az UTF-8-ban ez a szimbólum nem lesz ugyanolyan sikeres, mint bármely más kódolásnál.

Az UTF-8 fő előnye nem a karakterkészlet mágikus bővítése, hanem az egyszerű beillesztésük a dokumentumba.

Ha ismeri a Unicode-ot, akkor talán megkérdezed, miért ajánlom az UTF-8-at, és nem más modern kódolást - mondjuk UTF-16 vagy UTF-32. Válaszolom: ugyanazt a fő előnyt nyújtják, mint az UTF-8, de számos hiányosság is van. Először is, az UTF-8-mal ellentétben, nagyon jelentősen növelik a fájlok "súlyát". Másodszor, velük néhány böngészőben használják még mindig vannak problémák.

By the way, a W3C Consortium javasolja az UTF-8 weboldalak használatát.

Ne felejtsük el azonban, hogy a világ folyamatosan változik. Talán a jövőben vannak olyan okok, amelyek arra kényszerítenek bennünket, hogy lemondjunk az UTF-8-ról, és haladjunk tovább fejlettebb kódoláson. Amikor ez megtörténik, megmondom.