A dokumentum bemutatása html formátumban
Ez a fejezet bemutatja, hogyan jelenik meg a HTML dokumentumok a számítógépen és az interneten.
A dokumentum karakterkészletének szakasza absztrakt szimbólumok kérdésére utal. amely HTML formátumban része lehet a dokumentumnak. Ezek a szimbólumok közé tartozik az "A" latin betű, az "I" cirill "betű", a kínai "víz" karakter stb.
Mivel az emberi nyelvek nagyszámú szimbólummal rendelkeznek és sokféle módon mutatják be őket, ügyelni kell arra, hogy ezek a dokumentumok a felhasználók világszerte megérthetők legyenek.
A hálózatok interoperabilitásának lehetővé tétele érdekében az SGML minden alkalmazáshoz (beleértve a HTML-t) is meg kell adnia a dokumentum karakterkészletét. A dokumentum a következőket tartalmazza:- Repertoárt. Egy sor absztrakt szimbólum,. mint például az "A" latin betű, az "I" cirill betű, a kínai "víz" karakter stb.
- Kódok. A repertoár szimbólumaira vonatkozó egész számú referenciák halmaza.
Minden egyes SGML dokumentum (beleértve az egyes HTML dokumentumokat is) a repertoár karaktereinek sorozata. A számítógépes rendszerek minden egyes szimbólumot kóddal azonosítanak; Például az ASCII karakterkészletben a 65, 66 és 67 kódok az "A", "B" és "C" karaktereket jelentik.
ASCII karakterkészlet nem elegendő a globális információs rendszer, mint a Web, így HTML használ egy teljes karakterkészlet úgynevezett Universal Character Set (Universal Character Set - UCS), és meghatározott [ISO10646]. Ez a szabvány meghatározza a több ezer karakter világszerte használt repertoárt.
Az [ISO10646] -ben definiált karakterkészlet a Unicode 2.0 ([UNICODE]) karaktersúly-egyenérték. Mindkét szabvány időről-időre frissül, frissítve új szimbólumokkal, és a változásokat a megfelelő webszervereken meg kell tanulni. Ebben a leírásban az ISO / IEC-10646 vagy az Unicode ugyanazokat a karakterkészleteket jelenti. A HTML-specifikációban azonban a Unicode is említésre kerül más problémák, például a kétirányú algoritmus megvitatásakor.
A dokumentum karakterkészlet azonban nem elegendő ahhoz, hogy a felhasználói ügyintézők megfelelően értelmezhessék a HTML dokumentumokat egy tipikus cserélődésben - egy fájl bájtsorozataként vagy egy hálózati átvitel során kódolva. A felhasználói ügynököknek ismerniük kell a karakterkódolásokat is. amelyeket a dokumentumszimbólumok áramának átalakítására bájtokká alakítottak.
A specifikációban szereplő karakterkódolások más megnevezéseket tartalmaznak más specifikációkban (ami zavart okozhat). Azonban ez a koncepció az interneten ugyanazt jelenti. Az azonos nevű - „charset - charset” - használják a protokoll fejlécek, attribútumok és paraméterek utalva a karakterek és ugyanazokat az értékeket használják a [IANA] registry (a teljes listát lásd [karakterkészletek].).
A "charset" paraméter azonosítja a karakterkódolást, amely a byte sorozatot egy karaktersorozatba konvertálja. Ez a transzformáció természetesen illeszkedik a webes tevékenység sémájába: a szerverek HTML-dokumentumokat küldenek a felhasználói ügynököknek egy byte stream formájában; A felhasználói ügyfelek a karakterek sorozataként értelmezik őket. Az átalakulás módszerei az egyszerű egy-egy illesztéstől az összetett sémákig vagy kapcsolási algoritmusokig terjedhetnek.
Egy egyszerű egybájtos karakterkódolási technika nem elegendő az olyan széles karakterű repertoárú szövegsorokhoz, mint az [ISO10646]. A teljes karakterkészlet (például UCS-4) kódolásán kívül van még néhány részkódolás is [ISO10646].
Szerverek és proxy megváltoztathatja a karakterkódolás (az úgynevezett átkódolás) menet közben, hogy végre a felhasználói bekérjenek (lásd. 14.2 [RFC2068]. HTTP kérés fejlécében „Accept-Charset”). Szerverek és képviselet nem kell, hogy szolgálja a dokumentum kódolása, beleértve a teljes dokumentum karakterkészlet.
Széles körben használt webes titkosítás - ISO-8859-1 (más néven "Latin-1" használják a legtöbb nyugat-európai nyelven), az ISO-8859-5 (cirill támogatás), SHIFT_JIS (japán kódolás), EUC-JP (egy másik japán kódolás) és az UTF-8 (ISO 10646 egy variánst kódoló egy másik bájtok száma a különböző karakterek). Nevei karakterkódolásokat kis-és nagybetűk, úgy, hogy például „SHIFT_JIS”, „Shift_JIS” és „Shift_JIS” egyenértékű.
Ez a specifikáció nem határozza meg, hogy melyik karakterkódolást kell a felhasználói ügynöknek támogatni.
A megfelelő felhasználói ügyfeleknek helyesen kell megjeleníteniük a Unicode-ban minden olyan karaktert, amelyet bármilyen felismerni képes kódolásban fel lehet ismerni.
Megjegyzések bizonyos kódolásokról
Amikor HTML szöveget továbbítják az UTF-16 (charset = UTF-16), a szöveges adatokat kell továbbítani a hálózati byte sorrendben ( "big-endian" magasabb rendű byte - az első) összhangban [ISO10646]. 6.3 szakasz és [UNICODE]. C3 pozíció, 3-1. oldal.
Továbbá, hogy növeli annak valószínűségét, helyes értelmezés, akkor ajánlott továbbítja UTF-16, mindig kezdve a karakter nem törhető szóközök nulla szélességű (a hexadecimális kódot FEFF is nevezett Mark of byte sorrendben (Byte Order Mark - BOM)), amely kezeli byte lesz hex FFFE , soha nem jelölt ki egy szimbólumot. Így a felhasználói ügynök megkapja a hexadecimális kódot FFFE, mint az első bájt a szöveg lesz tudatában annak, hogy a többi szöveg, a byte kell megfordítani.
Ne használja az UTF-1 átalakítási formátumot [ISO10646] (regisztrált IANA ISO-10646-UTF-1 formátumban). Az ISO 8859-8 és a kétirányú algoritmusról a kétirányúsági és karakterkódolási szakaszban olvashat.
Hogyan határozza meg a kiszolgáló, melyik karakterkódolást használják a dokumentumban? Egyes kiszolgálók ellenőrzik a dokumentum első néhány bájtját, vagy ellenőrzik az ismert fájlok és kódolások adatbázisát. Számos modern webszerver adminisztrátornak köszönhetően nagyobb mértékben szabályozhatja a karakterkészlet konfigurációját, mint a régebbi szerverek. A webkiszolgálók adminisztrátorainak - ha lehetséges - a következő mechanizmusokat kell használniuk a "charset" paraméter elküldéséhez, de ügyelniük kell arra, hogy ne állítsák be a dokumentumokhoz tartozó "charset" paraméter hibás értékét.
Hogyan ismeri fel a felhasználói ügynök a karakterkódolást? Ezt az információt a szerver biztosítja. A legjobb módja annak, hogy tájékoztassa a böngésző a karakterkódolás a dokumentum - a „charset” paraméter a fejléc mező „Content-Type” HTTP protokoll ([RFC2068] szekciók 3,4 és 14,18.) Például a HTTP fejléc bejelenti a következő, amely a kódolási EUC-JP:
A HTTP protokoll ([RFC2068], 3.7.1. Szakasz) az ISO-8859-1 szabványnak az alapértelmezett karakterkódolásnak minősül, ha hiányzik a "Content-Type" fejléc mezőben a "charset" paraméter. A gyakorlatban ez az ajánlás haszontalan, mivel egyes kiszolgálók nem engedélyezik a "charset" paraméter küldését, és egyesek nem konfigurálhatók a paraméter elküldésére. Ezért a felhasználói ügynökök nem vállalhatnak semmilyen értéket a "charset" paraméterhez.
Szerverkorlátozások vagy -konfiguráció megadásához a HTML dokumentumok tartalmazhatnak pontos információkat a dokumentum karakterkódolásáról; Az ilyen információknak a felhasználói ügyfelek számára történő rendelkezésre bocsátásához META elemet lehet használni.
Ezen prioritási listán kívül a felhasználói ügynök is használhat heurisztikus beállításokat és felhasználói beállításokat. Például sok felhasználói ügynök heurisztikusan használja a japán nyelvhez használt különböző kódolások felismerését. A felhasználói ügynökök általában egy felhasználó által definiált helyi alapértelmezett kódolást használnak, amelyet akkor használnak, ha nincs kódolási utasítás.
Megjegyzés. Ha egyes alkalmazásokban olyan karaktereket kell használni, amelyek nem szerepelnek a kódolásban [ISO10646]. ezeket a szimbólumokat személyes zónához kell rendelni annak elkerülése érdekében, hogy ütközésbe lépjen a szabvány e vagy jövőbeli verzióival. Ez azonban nem ajánlott hordozhatósági okokból.
A HTML karakterekre történő utalások kétféleképpen vehetők igénybe:
- Numerikus karakter hivatkozások (tizedes vagy hexadecimális).
- Hivatkozások a szimbólumok kombinációira.
Megjegyzés. A HTML másféle módon jeleníti meg a karaktereket, különösen a beágyazott képeket.
Megjegyzés. Az SGML-ben bizonyos esetekben nem használhatod a végleges karaktert ";" a szimbólumok megjelölése után (például a sortörés karakterben vagy közvetlenül a címke előtt). Más körülmények között nem lehet törölni (például egy szó közepén). Javasoljuk a ";" mindig a felhasználói ügynökök problémáinak elkerülése érdekében, amelyekre ez a szimbólum szükséges.
5.3.1 Numerikus karakter hivatkozások
A numerikus karakteres hivatkozások jelzik a karakterkódot a dokumentum karakterkészletében. A szimbólumok számszerű hivatkozása kétféleképpen is megtehető:- A "#D;" szintaxis, ahol D decimális szám, a Unicode karaktert jelöli a decimális számmal.
- A szintaxis "#xH;" vagy "#XH;", ahol H egy hexadecimális szám, egy hexadecimális H számmal rendelkező Unicode karakterre mutat. A hexadecimális numerikus hivatkozások a kis- és nagybetűkre érzékenyek.
Íme néhány példa a numerikus karakter hivatkozásokra:
- # 229; (decimális) az "a" betűt jelenti, amelynek felső felülete (például norvég).
- # xE5; (hexadecimális) ugyanazt a karaktert jelenti.
- # Xe5; (hexadecimális) ugyanazt a karaktert jelenti.
- # 1048; (tizedes) az "I" cirill "nagybetű" betű.
- # x6C34; (hexadecimális) a kínai "víz" karakter.
Megjegyzés. Bár a hexadecimális ábrázolás nincs meghatározva az [ISO8879] -ben. Az új verzió várható a [WEBSGML] -ben leírtak szerint. Ez az egyezmény különösen hasznos, mivel a karakterstandardok általában hexadecimális jelöléseket használnak.
5.3.2 Szimbólum hivatkozási kombinációk
A HTML 4.0 nem definiál egy karakter entitás-referenciát minden karakterhez. Például a cirill "I" betű esetében nincs karakter entitás-referencia. Lásd a HTML 4.0-ban definiált karakterekre vonatkozó hivatkozások teljes listáját.
A karakter hivatkozások kombinációi kis- és nagybetűkre érzékenyek. Például, Å egy másik karaktert (A-t nagybetűs kört jelöl), és nem å (a kisbetűvel).
Négy kapcsolatot kell kifejezetten megemlíteni, mivel gyakran használják speciális karakterek megjelölésére:- "Lt;" jele <.
- "Gt"; a> jel>.
- "-" jelzi a karaktert .
- "jelet jelent."
Előfordulhat, hogy a felhasználói ügynök nem tudja megjeleníteni a dokumentum összes karakterét, például mivel nincs megfelelő betűtípus, vagy ha a karakter olyan értéket tartalmaz, amelyet a felhasználói ügynök belső kódolásában nem lehet kifejezni stb.