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
Bemærk, benytter du den gamle MySQL extension kaldt mysql, så er den på vej til at forlade PHP. Du bør derfor begynde at kigge på at opgradere til mysqli.
Hvis du ikke allerede gør det, er det en god ide, at du også fortæller browseren der besøger din hjemmeside, hvilken character encoding der skal benyttes. Dette kan som tidligere nævnt klares via HTTP headeren, og her er der ikke tale om meta tagget, som man skriver i sit HTML dokument. Derimod skal det sendes i headeren, som kommer forud for HTML dokumentet og ikke direkte kan ses i browseren. I PHP vælges UTF-8 ved at tilføje følgende aller øverst i ens PHP scripts.
<?php header(‘Content-Type: text/html; charset=utf-8’); ?>
Se mere på http://php.net/manual/en/function.header.php
Skulle du fortsat have problemer, er du naturligvis meget velkommen til at kontakte vores support.
Skriv et svar