HTML © Eva von Pepel
* [ HTML-referensbok ] * [ Referensböcker ] *
SGML-dokument kräver att en teckentabell specificeras (se SGML-deklaration) som den specifika dokumenttypen stödjer. Då HTML är en applikation av SGML måste även dokument av typ HTML i sin egen SGML-deklaration specificera den aktuella dokumenttypens teckentabell som ska användas vid avläsningen.
HTML-dokument är ett vanligt textdokument och kan innehålla ett valfritt antal utskriftbara tecken från 8-bitars ISO LATIN-1 teckentabell, även kallad ISO 8859/1. Denna teckentabell innehåller 256 tecken; 128 tecken från 7-bitars US-ASCII teckentabell (ISO 646) och 128 tecken från den åttonde biten som innehåller många europeiska tecken med olika accenter, bl a alla "prickade" svenska tecken.
Då många tangentbord inte klarar tecken från den åttonde biten finns en mekanism i HTML som tillåter att man ersätter de med hjälp av olika teckenkombinationer som kan skapas med tecken som finns tillgängliga i ASCII teckentabell. Dessa teckenkombinationer som representerar tecken från den åttonde biten kallas teckenreferenser (character references).
II samband med internationaliseringen av WWW räckte inte längre tekentabell ISO LATIN-1. Därför introducerade man en ny teckentabell i HTML 4.0 - Universal Character Set (UCS) som innehåller tusentals tecken tillgängliga för de flesta användare världen över. Denna teckentabell är definierad i ISO/IEC-10646 och är en motsvarighet till Unicode 2.0 (http://www.unicode.org). Nya www-klienter har börjat stödja Unicode 2.0. Stödet är inte dock fullständigt - än.
Då dokumentens teckentabell ofta byts ut, till exempel vid överföring från ett system till ett annat, är den inte alltid tillräckligt för en korrekt avläsning. Därför behöver en www-klient även veta hur tecknen ska avkodas.
För att underlätta tolkningen av tecken för www-klienten kan man med hjälp av attributet CHARSET uppge i dokumentet vilken teckenavkodning som ska användas. Element som hänvisar till en extern källa (A, LINK, SCRIPT) och även FORM kan ta detta attribut. Om du vill specificera dokumentets teckenavkodning kan du använda antingen ett HTTP-protokoll i en HTTP-request header som skrivs på första raden i dokumentet eller META-deklarationen. Om dokumentets ska avkodas till exempel på japanska skriver du:
Content-Type: text/html; charset=EUC-JP
Saknas HTTP-protokoll bör ISO-8859-1, som är standardvärde, användas. Då vissa servrar inte tillåter att CHARSET skickas och andra inte är konfigurerade för att göra det rekommenderas inte något standardvärde. Därför bör du använda META-deklarationen om du vill skicka information om teckenavkodning till www-klienten.
<META http-equiv="Content-Type" content="text/html" charset=EUC-JP">
META är ett av HEAD-elementen, dvs förekommer mellan <HEAD> och </HEAD>. HEAD-elementen kan förekomma i valfri ordning, men för att just denna META-information ska nå www-klienten så fort som möjligt, helst direkt efter <HEAD>.
<A HREF="dokument.html charset=euc-jp>
Observera att namn på teckenavkodningar kan skrivas med både stora och små bokstäver. Alla tillåtna teckenavkodningar registreras av IANA och kan hämtas på IANA.
Med hjälp av attributet LANG, som kan tilldelas de flesta element, kan du överskrida den i HTTP-protokollet eller META-deklarationen specificerade avkodningen.
Om något tecken från dokumentets teckentabell inte kan avkodas, till exempel p.g.a. begränsningar i hård- eller mjukvara, kan detta tecken bytas ut mot en s.k. teckenreferens som representerar tecknet. Dessa teckenreferenser är oberoende av teckenavkodningar och gör varje tecken från dokumentets teckentabell tillgängligt. Teckenreferenser kan förekomma som:
Numeriska teckenreferenser specificerar tecknets kodposition i dokumentets teckentabell och kan uppges antingen som decimal eller hexadecimal. Referensen representerar en teckensträng som börjar med tecknet & som markerar referensens början, följs direkt av en stege # (nummer), tecknets kodposition och som avslutas med ett semikolon. Representanter för t ex tecknet "å" är:
decimal - å
hexadecimal - å
hexadecimal kan innehålla både siffror och bokstäver. Bokstäverna kan skrivas med både små som stora bokstäver.
Dessa referenser använder symboliska namn givna numeriska referenser. å döptes till exempel om till å för att göra tecknet lättare att minnas.
| tecken | entity | num | hex |
|---|---|---|---|
| å | å | å | å |
Entity-referenser måste skrivas exakt, dvs du får inte blanda stora och små bokstäver.
OBS! Teckenreferenser 127-159 (t ex ‡) saknas i ISO-8859-1 och är ej definierade i HTML. Därför bör de inte användas.
Inte alla servrar är konfigurerade att tolka ISO-Latin-1. Dessutom använder vissa datorer, t ex Macintosh, egna mappings system mellan binära koder och tecken som de representerar. Detta kan orsaka att de 128 tecken som är ej ASCII tecken (den åttonde biten) där bl a de sista tre svenska bokstäverna ingår tolkas på ett felaktigt sätt.
Om du vill försäkra dig om att dokumenten ska kunna läsas av "alla" bör du använda 7-bitars US-ASCII teckentabell och använda entity- eller nummerreferenser för att referera till tecken från den åttonde biten.
Använd följande entity- eller nummerreferenser istället för svenska bokstäver.
| tecken | entity | num | hex |
|---|---|---|---|
| Ä | Ä | Ä | Ä |
| ä | ä | ä | ä |
| Ö | Ö | Ö | Ö |
| ö | ö | ö | õ |
| Å | Å | Å | Å |
| å | å | å | å |
| É | É | É | É |
| é | é | é | é |
Det finns fyra tecken i HTML som har en speciell mening och som betraktas som annorlunda. Tecknet "&" används till exempel för att markerna början på en referens eller entity. Stöter en www-klient på detta tecken förväntar den sig en referens eller entity. Samma gäller tecknen "<" och ">" som används för markorden och även citationstecken (") som används för avgränsning av attributvärden. Vill du använda dessa tecken bokstavligen, dvs i en annan mening än den ovan nämnda, måste du ändra dem till dess numeriska eller namngivna referenser för att inte förvirra www-klienten.
| tecken | entity | num |
|---|---|---|
| < (less than) | < | < |
| > (grater than) | > | > |
| & (ampersand) | & | & |
| " (double quote) | " | " |
| <H1> Rubrik </H1> | Så skriver du om du till exempel vill visa hur en rubrik markeras. |
| <H1> Rubrik </H1> | Så kommer denna sträng att visas på skärmen. |
Rubrik |
Så skulle strängen visas om du inte använde referenser. WWW-klienten skulle tolka den som en vanlig rubrik. |