Avatar billede skovge Novice
09. oktober 2009 - 15:10 Der er 15 kommentarer

åæø

Når jeg laver php sites løber jeg af og til ind i problemet med, at æøå ikke vises korrekt - som udgangspunkt bruger jeg:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

og der vises tekst skrevet direkte i html/php siden fint nok - men når jeg loader værdier ind fra en SQL DB, fx:
$sql="select concat(text) as text from pages where name = '$name'";

så vises æøå i denne tekst ikke korrekt - hvis jeg så ændrer til:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

...så vises teksten fra SQL DB korrekt - men teksten skrevet direkte i html/php filen vises forkert - dette kan jo så omgås med &aelig; osv. - men er jo lidt besværligt.

Hvad er den korrekte metode til at komme dette til livs?
Avatar billede hmanback Nybegynder
09. oktober 2009 - 15:20 #1
Du kan bruge funktionen utf8_encode til at encode output korrekt. http://dk.php.net/manual/en/function.utf8-encode.php

Hvis du som udgangspunkt vil bruge utf-8 bør du sætte din myssql collation til utf_8 f.eks utf8_unicode_ci og mysql charset til utf-8 unicode, så skulle du slippe for at skulle encode output.
(er det en mysql db du bruger?)
Avatar billede Gudiik Nybegynder
09. oktober 2009 - 15:22 #2
du skal have sat din database til utf-8
Avatar billede skovge Novice
09. oktober 2009 - 15:41 #3
Ja, det er en mysql DB
Avatar billede dkfire Nybegynder
09. oktober 2009 - 15:45 #4
Du skal sørge for at den side som ligger din tekst i databasen også er sat til utf-8 samt at alle sider er gemt som utf-8.

Hvordan ligger du data ind i din db ?
Avatar billede skovge Novice
09. oktober 2009 - 15:59 #5
Som regel via et hjemmelavet php cms site der bruger fckeditor til text og alm. form textfields til øvrige variable
Avatar billede skovge Novice
09. oktober 2009 - 16:01 #6
btw - DB er sat til UTF-8

MySQL Tegnsæt:  UTF-8 Unicode (utf8)
Avatar billede Gudiik Nybegynder
09. oktober 2009 - 16:04 #7
har du gigahost?
Avatar billede skovge Novice
09. oktober 2009 - 16:53 #8
nej ikke gigahost
Avatar billede dkfire Nybegynder
09. oktober 2009 - 19:05 #9
Du skal sørge for at samtlige sider i din system er gemt som utf-8.
Hvis en side er gemt som andet, kan den godt finde på at ligge data i din sql med et andet format.
Avatar billede skovge Novice
09. oktober 2009 - 19:26 #10
Hmm, ja det er de også - det sættes de til som default i dreamweaver.
Avatar billede dkfire Nybegynder
10. oktober 2009 - 11:22 #11
Du kan når du åbner forbindelsen til mysql sørge for at data mellem webserver og mysql server også bruger utf-8

Det kan du gøre ved at sende en query med "SET NAMES 'utf8'".

Du kan læse mere om det her:
http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html
Avatar billede skovge Novice
13. oktober 2009 - 15:35 #12
>>dkfire : takker, fandt løsningen på dit link http://dk.php.net/manual/en/function.utf8-encode.php om utf8_encode
Avatar billede skovge Novice
13. oktober 2009 - 15:36 #13
>>dkfire : læg et svar så er point dine
Avatar billede dkfire Nybegynder
13. oktober 2009 - 19:27 #14
Det var nu ikke mig som nævnte noget om utf8_encode, det var hmanback, så synes du skulle give pointene til ham/hende, hvis det er den løsning du vælger.
Avatar billede skovge Novice
13. oktober 2009 - 19:44 #15
Ja det var det da også - sorry.

hmanback - læg et svar så er point dine.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester