Skip to content

Republic / Artiklar /

Artikeln uppdaterad 2021-04-14.
Skriven av Christofer Sandin.

MySQL och UTF8 på rätt sätt

När man skall spara data på andra språk än engel­s­ka så är det teck­enkod­nin­gen UTF8 som gäller. Den sto­ra förde­len med det­ta är att det finns stöd för tusen­tals oli­ka teck­en så man kan spara ett å som ett å i data­basen på rik­tigt” – vilket gör det otroligt myck­et enklare att arbe­ta med text.

Tyvärr är det gan­s­ka van­ligt att det ändå blir prob­lem när man skall spara UTF-8-kodad text i en MySQL-data­bas, trots att både data­basen och tabellen har rätt encoding och collation. Den troli­gaste orsak­en till det­ta är att MySQLs con­nec­tion char­ac­ter set som stan­dard är satt till latin1 istäl­let för UTF8. Det­ta gör att du ändå får prob­lem med sven­s­ka och andra teck­en som inte tillför lat­in1-upp­sät­tnin­gen… Här är en lös­ning på prob­lemet som funger­at för oss.

Om du admin­istr­erar data­basen själv

Om du har till­gång till filen my.conf så kan du under sek­tio­nen [mysqld] läg­ga till föl­jande två rader:

collation_server=utf8_unicode_ci
character_set_server=utf8

för att lösa prob­lemet per­ma­nent på den servern.

Om du använ­der ett webbhotell

Använ­der du däre­mot dig av ett webb­hotell så måste du sät­ta vari­abeln NAMES till rätt värde. Det­ta gör du i koden efter det att du anslu­tit till data­basen. Såhär ser det ut i PHP:

mysql_query("SET NAMES utf8");

eller använd föl­jande rad för att se till att även col­la­tion är satt till rätt värden:

mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'");

… och du kan till och med behö­va sät­ta char­ac­ter set på egen hand om det­ta inte heller är satt till UTF8:

mysql_query("SET CHARACTER_SET utf8");

Om MySQL är kon­fig­ur­erat på rätt sätt så skall den över­s­ta raden ovan räc­ka men det är kanske inte hela världen att sät­ta alli­hop för att vara på den säkra sidan heller…

Vill du ha mer infor­ma­tion om det­ta så hit­tar du det i MySQL 5.0 Ref­er­ence Man­u­al, sec­tion 9.1.4

Relaterade artiklar