Undgå underlige tegn - Vælg det rigtige tegnsæt
Udgivet d. 11. december 2013
For at tekst kan gemmes og gengives på computere skal der benyttes et tegnsæt, men det er ikke kun på computere, at det benyttes. F.eks. er morsekode også et tegnsæt, hvor forskellige værdier af kort og lang repræsenterer forskellige tegn/bogstaver.
Oftest er tegnsættet ikke noget man skal bekymre sig om som almindelig bruger, men udvikler man en hjemmeside, skal man være opmærksom på, hvilket tegnsæt man benytter og sikre sig, at alle ens data benytter dette tegnsæt. Det er især vigtigt, når man gør brug af tegn der strækker sig udover det latinske alfabet - f.eks. æ, ø og å, som vi bruger her i Danmark.
I world wide webs barndom løste man det ved at have særlige HTML-koder for særlige tegn. F.eks. hvis man ville skrive ø, så skrev man `ø` i sit HTML-dokument. Dermed sikrede man sig, at der rent faktisk blev vist et ø korrekt ude hos brugeren. Siden har det udviklet sig, så man nu fra serveren kan medsende information om hvilket tegnsæt man benytter, således at browseren hos brugeren kan vise særlige tegn korrekt. Dette sker via HTTP headeren, men mere om det senere.
Til brug på danske hjemmesider er der en række forskellige tegnsæt også kaldt character sets, som vil kunne benyttes, men de to mest udbredte er ISO-8859-1 og UTF-8. Især UTF-8 øger sin udbredelse og er efterhånden den moderne standard. Udvikler du på et nyt projekt, så vælg UTF-8, da det langsigtet giver det bedste fundament.
For at dine tegn ender med at blive vist helt korrekt ude hos brugerne, er det nødvendigt at hele datakæden benytter samme tegnsæt. Dette er der mange hjemmelavede hjemmesider, som glemmer at tage højde for, hvorimod der er helt styr på det, hvis man benytter et CMS som Wordpress, Drupal osv.
I øjeblikket er vi ved at opgradere vores webhoteller med nyere software herunder PHP 5.4. I den forbindelse har den indbyggede MySQL klient ændret sig, således at den nu som standard benytter UTF-8 som charset. Derfor vil man nu opleve problemer med tegnsætningen med data fra MySQL, hvis man ikke benytter UTF-8 og ikke har defineret tegnsættet i sin MySQL forbindelse. Derfor skal tegnsættet være defineret, og det gælder faktisk også, hvis man benytter UTF-8, således at man altid er sikret, at det helt korrekte tegnsæt bliver brugt.
I PHP eksisterer der 3 metoder til oprettelse af MySQL forbindelser. Se her hvorledes du retter for enkelt af de 3 metoder:
- MySQL (mysql) http://php.net/manual/en/function.mysql-set-charset.php
- MySQL Improved Extension (mysqli) http://php.net/manual/en/mysqli.set-charset.php
- MySQL (PDO) http://php.net/manual/en/ref.pdo-mysql.connection.php
<?php header('Content-Type: text/html; charset=utf-8'); ?>
Se mere på http://php.net/manual/en/function.header.phpSkulle du fortsat have problemer, er du naturligvis meget velkommen til at kontakte vores support.