HTML

Teckenupsättning

Digital (binär) information består av serier av "ettor" och "nollor", bits, vilka kombineras och tolkas som till exempel bokstäver (eller annan information). För att datorn skall förstå vilka tecken det är frågan om, är den utrustad med olika teckentabeller, teckenuppsättningar, eller teckenkodningar. Dessa innehåller information om hur en den digitala informationen skall tolkas om till bokstäver.

För att webbläsaren skall kunna visa rätt tecken behöver den informeras om vilken teckenuppsättning som används i dokumentet som ska visas. Finns inte den informationen i HTML-dokumentet kommer den använda en förinställd teckenuppsättning, som kan variera mellan länder och språk.

Man får vanligtvis inga problem med att visa alla svenska tecken på en dator som är inställd på att prata svenska, men säg att du visar samma dokument på en japanskspråkig dator.

Många problem med felvisade tecken kan lösas genom att man använder den moderna Unicode-standarden UTF-8.

ISO/IEC 8859-1

Traditionellt har man för att skriva webbsidor på svenska och andra västeuropeiska språk använt sig av teckenuppsättningen (character set, charset) ISO/IEC 8859-1 (eller, lite kortare, iso-8859-1).

ISO/IEC 8859-1 inehåller 191 tecken, vilket innebär att vissa tecken kan behöva ersättas med teckenkoder. Det finns naturligtvis inte heller stöd för några andra alfabeten än det latinska.

UTF-8

En teckenuppsättning som har blivit vanligare, både på webben och i andra tillämpningar på datorer är Unicodestandarden UTF-8. UTF-8 kan visa över en miljontecken och gör det alltså möjligt att blanda alfabeten och språk fritt utan att byta teckenkodning.

Idag klarar alla moderna operativsystem och webbläsare av att tolka UTF-8. Dock måste programmet man skriver sin kod i vara inställt för att använda UTF-8 för att det ska bli det.

Ange din teckenkodning i HTML-dokumentet

För att tala om för webbläsaren vilken teckenkodning som används fogar du in en särskild <meta>-tagg i HTML-dokumentets huvud, någonstans mellan <head> och </head>.

Om du använder utf-8 ser det ut så här:

<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

För iso-8859-1 blir det:

<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">

I HTML 5 är detta förenklat till <meta charset="utf-8"> eller <meta charset="iso-8859-1">, men eftersom detta inte säkert fungerar i alla webbläsare brukar det rekommenderas att man har både det nya och det gamla med i <head> om man skriver HTML 5.

Teckenkoder

I HTML finns det ett antal teckenkoder (HTML entities) som ersätter specialtecken som kanske inte finns på ditt tangentbord, eller inte finns med i den teckenuppsättning du har valt. Det kan vara allmänna specialtecken, tecken som hör till ett annat språk än ditt tangentbord, matematiska symboler eller emojis, och så vidare…

Faktum är att alla tecken du kan skriva på tangentbordet också går att ersätta med teckenkoder Exempel på hur det kan se ut när tecken inte fungerar kan du se när du skriver de svenska bokstäverna å, ä eller ö i ett HTML-dokument utan att ange teckenuppsättning i <head>.

Teckenkoder kan anges med ett namn, en sifferkod med vanliga decimalsiffror eller hexadecimala siffror.

Alla teckenkoder börjar med ett och-tecken (&) och avslutas med ett semikolon (;)

Teckenkoder med namn

Av alla tecken som kan anges som teckenkoder i HTML finns det ett antal som kan anges med namn. Dessa namn är alltid baserade på tecknets namn på engelska. Och-tecknet (&) heter till exempel ampersand på engelska och har teckenkoden &amp;. Den svenska bokstaven å ser ut som ett a med en ring över, så den heter &aring;, stora Å har teckenkoden &Aring;. Mindre-än-tecknet < heter "less than" på engelska, och har teckenkoden &lt;… Det finns alltid någon form av logik i namnen, vilket gör att de blir relativt enkla att komma ihåg. Ibland finns det också fler än ett namn för samma tecken.

Tecken angivna med siffror

Unicode-standarden innehåller över en miljon olika tecken. Alla dessa har ett nummer som kan anges som teckenkod. I användarens webbläsare kan dock bara de som finns med i något på datorn installerat teckensnitt (eller i en medskickad webfont) visas.

Numeriska teckenkoder kan anges antingen som vanliga decimalsiffror, eller som hexadecimala siffror.

Numeriska teckenkoder i decimalsiffror börjar med &# och slutar med ;. Numeriska teckenkoder i hexadecimala siffror börjar med &#x och slutar med ;.

Alla teckenkoder med namn kan också anges som numerisk kod.

Exempel:

tecken dec hex
😀 &#128512; &#x1F600;
😁 &#128513; &#x1F601;
😂 &#128514; &#x1F602;
😃 &#128515; &#x1F603;
😄 &#128516; &#x1F604;
😅 &#128517; &#x1F605;

Tecken som alltid ska bytas ut

Vissa tecken har särskilda funktioner i HTML och ska alltid ersättas med teckenkod, dessa kallas för reserverade tecken.

tecken teckenkod
" (citationstecken) &quot;
' (apostrof) &apos;
& (och-tecken) &amp;
< (mindre än) &lt;
> (större än) &gt;

Om du använder dig av teckenuppsättningen UTF-8 behöver du normalt bara byta ut de reserverade tecknen eller tecken som inte går att hitta på tangentbordet.

Referens

En bra och lättanvänd förteckning (på engelska) över alla teckenkoder du kan behöva om du använder utf-8 kan du hitta hos w3schools.