Tegnsett/text encoding

Tegnsett eller text encoding er ikke noen lett sak å håndtere. Det fikk jeg virkelig oppleve med den siste kunden jeg jobbet med. problemet ble så stort at jeg tenkte å skrive en liten sak om det så andre kan unngå samme problem.

Mange har sikkert sett de klassiske spørsmålstegnet i en svart rombe på nettsider med kun støtte for engelske tegn. Kort sagt betyr det at nettleseren ikke kan tolke tegnet du prøver å vise. Dette skjer som regel med tegn som “ÆØÅæøå” som er spesielle til det norske alfabetet.

For å tolke disse tegnene trenger nettsiden å vite hvordan tegnsett siden bruker. Den mest moderne standarden er i dag Unicode, den er identisk med det gamle ISO/IEC-standarden. Dette er en standard som inkluderer alle verdens bokstaver, tall og andre symboler inn i et stort ”bibliotek”. Standarden definerer også hvordan de forskjellige symbol assosieres med sin tallverdier.

For å oversette disse tallverdiene til bokstaver på nettsider trenger man en definisjon av tegnsettet. Noen eksempler på dette kan være UTF-7, UTF-8, UTF-16 og Latin 1.

Da begynner vi å komme til selve kjernen av problemet. Hvordan forandre nettsiden til riktig tegnsett.

Sjekk at dokumentet har en tegnsett definisjon inni <head> taggene. Dette skal se følgende ut.

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

I HTML5 kan man bare bruke

<meta charset="UTF-8" />

Coda, UTF converter

Problemet kan ligge i redigerings programmet som du redigerer siden i. Jeg bruker Coda, de har en veldig fin måte å sjekke og redigere tegnsettet på. Du klikker på den lille tannhjulet på bunnen av dokumentet også velger du ”text Encoding -> Unicode (UTF-8)”. Vips du har konvertert siden din til UTF-8.

Om du bruker WordPresse (eller andre CMS til å redigere innhold) kan problemet ligge i databasen. Det kan være at databasen ikke er konfigurert til å bruke unicode. Da kan du kjøre en enkel MySQL query:

SET NAMES utf-8;

Hos noen webhoteller finnes det innbygde funksjoner for å forrandre dette lettere.

Tidligere innhold i databasen er fortsatt i et annet tegnsett (typisk Latin 1). Da kan du kjøre en enkel MySQL comand:

ALTER TABLE myTable CHARACTER SET utf8 COLLATE utf8_general_ci;

Da skal alt innholdet i databasen være konvertert.

Bonus: om du bruker WordPress kan du redigere to linjer i wp.config.php filen

define('DB_CHARSET', '');
define('DB_COLLATE', '');

til

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', 'utf8_general_ci');

Etter dette kan du laste den opp til serveren og alt innholdet blir konvertert til UTF-8.

Har jeg glemt noen eller oversett noen, legg igjen en kommentar.

 

Start en diskusjon, det er ingen før deg.

Si din mening.