Ved at bruge denne side acceptere du samtidig Brugbarts og vores partneres brug af cookies.

Læs mere

Danske Bogstaver - Æ Ø Å - Karaktersæt

Hvordan du opsætter din hjemmeside med UTF-8 karaktersæt

Redigeret: 2015-02-12 23:19

Det er ikke nok at headerne er indstillet korrekt - selve kilde filerne skal også gemmes i det rigtige karaktersæt. Hvis kilde filerne er skrevet i ISO-8859-1, så vil visse tegn ikke blive vist hvis du levere siderne som UTF-8 - det skyldes at visse tegn, eksempelvis Æ Ø Å bliver kodet anderledes i de to karaktersæt.

Danske Bogstaver.. Æ Ø Å og UTF-8

Der er mange som anbefaler UTF-8 uden egentlig at kende grunden til UTF-8 er bedre. Når folk så ikke kan få det til at virke, så er de ofte blevet rådet til at erstatte Æ Ø og Å med HTML koder som vist i tabellennedenfor:

Æ:æ
Ø:ø
Å:å

Problemet med det er, at det ikke er en løsning, men derimod et klodset hack. UTF-8 kan godt vise Æ Ø Å! Hele mening med at skifte til UFT-8 er jo nettop at understøtte alle mulige mærkelige tegn fra forskellige sprog - problemet er bare ofte at folk glemmer at gemme selve kilde filerne i UTF-8, og derfor vises deres elskede bogstaver forkert når de forsøger at levere det som UTF-8.

Man skal derfor huske at åbne filerne i en editor, eksempelvis notepad++, og så vælge det rigtige karaktersæt fra "Encoding" menuen - du skal så indskrive de relevante bogstaver igen til sidst, det nemmeste vil nok være bare at erstatte de forkerte tegn med de nye.

Headers og Karaktersæt

Karaktersæt skal angives i HTTP Content-type headeren, der findes plugins til de forskellige browsere som viser HTTP headerne for besøgte sider. Nedenfor ses et eksempel på hvordan browseren kan svare til en GET anmodning:

Content-Type: text/html; charset=utf-8

Som du kan se angives karaktersæt i Content-type headeren, sammen med medie typpen.

I PHP kan man angive Content-Type med header funktionen, som vist nedenfor:

header('Content-type: text/html; charset=utf-8');

Bemærk. Headers skal sendes før alt andet indhold.

Opsætning af Databaser

Hvis du arbejder med databaser, så bliver det mere kompliceret. Selve databasen skal nemlig også have den rigtige kollektion, eksempelvis utf8_general_ci til UTF-8 indhold - og det er stadig ikke sikkert at det er nok, selve forbindelsen til databasen skal muligvis også sættes til UTF-8.

I PHP kan det gøres ved at inkludere følgende efter database forbindelsen:

$Connection = mysql_connect($MYSQL_Host, $MYSQL_user, $MYSQL_pass);
$Selected = mysql_select_db($MYSQL_db, $Connection);
mysql_set_charset('utf8');

Forbindelsens karaktersæt kan dog også indstilles i selve konfigurations filerne for MySQL, hvilket nok vil være en del nemmere, end at skulle angive det i alle scripts. Derimod kan det være en god idé at angive det i selve scriptsne, hvis du ikke kender opsætningen på den MySQL server de kommer til at bruge.

Kollektionen for dine tabeller og selve databasen kan du indstille enten manuelt eller via phpmyadmin.