03. november 2008 - 20:16Der er
21 kommentarer og 1 løsning
Danske bogstaver i MySQL, phpAdmin og Dreamweaver
Hej. Jeg er meget i tvivl om hvor selve problemet er, men jeg forsøger at forklare. Jeg har i Excel eksporteret en fil til semikolonsep. teksfil som er importeret i Phpadmin. Her vises de danske bogstaver fint. I Dreamweaver har jeg oprettet en søgeside (.php), som forbinder til databasen oprette i Phpadmin. Problemet er at søgeresultater som burde indholde æ, ø og å vises forkert - men andet indhold, også æ, ø og å vises fint. Kan I hjælpe med at lokalisere problemet?
jeg indsatte header("Content-type: text/html; charset=iso-8859-1"); med det resultat at søgeresultaternerne er med æ, ø og å, MEN øvrigt indhold med æ, ø og å vises forkert.
Det indhold som ikke bliver vist korrekt, er indkodet med et andet charset i så fald. Det skal du lige få styr på, og få lavet det til samme indkodning.
Hvis det bliver vist korrekt med den header du skriver, er kollationen i den tabel du får søgeresultater fra, ikke med utf8. Med mindre du decoder det.
Ligger dit andet indhold også i database?
Hint: Tag et kig på PHP funktionerner utf8_decode og utf8_encode.
Kollation i Phpadmin er utf8_danish_ci, så det må vel være min php-søgeresultatside der er problemet. Det er ikke bevidst jeg decoder det, men database er ret nyt for mig, så jeg har endnu ikke helt overblikket over hvor meget Dreamweaver styrer.
Encoding på siderne er sat til UTF-8, og i head-delen står: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Det burde vel være korrekt eller?
Jeg fandt en lignende tråd her på siden, hvor der står man skal sikre sig: 1) din database bruger utf-8 (tjek kollationer i phpMyAdmin) 2) din server sender dokumenterne som utf-8 3) dine dokumenter er gemt som utf-8 4) du bruger en utf-8 meta i dine dokumenter
Jeg har gjort følgende: 1) I phpadmind er MySQL Tegnsæt:UTF-8 Unicode (utf8) og MySQL forbindelses-sammenkøring: utf8_danish_ci. 2) jeg går ud fra det er forbindelsessammenkøring som er nævnt under 1) 3) jeg har åbnet i notepad og sikret dette er korrekt 4) jeg har <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> i meta
Det du skal kontrollere når du har gemt dokumentet som UTF-8, er at dine danske tegn står korrekt i selve filen. De burde ændre sig hvis de var forkerte.
I Dreamweaver kan du indstille hvilken indkodning den skal bruge. Jeg bruger ikke selv Dreamweaver, så jeg ved dog ikke hvor. Kig igennem indstillinger og se om du ikke kan finde det. Og når du er sikker på at redigeringen af dokumentet foregår i UTF-8, skal du kontrollere det tekst som står forkert på sitet :)
De danske tegn står i filen når den er gemt (php-filen hvor databaseresultaterne vises). I Dreamweaver er der under page properties valgt Unicode UTF-8 og unicode normalization form: C (Canonical Decomposition, followed by Canonical Decomposition).
I phpadmin vises de danske bogstaver. I dreamweaver er der en testmulighed for at søge i database, her vises fx å som kinesiske(?) tegn, mens de på hjemmesiden vises som firkanter.
Jeg har nu forsøgt at ændre koallation til mange af de andre muligheder, men intet ændre på mit søge resultat. Det burde det, eller har jeg misforstået noget?
Det jeg gerne ville vide, var hvilken indkodning din browser viser. Hvis du bruger Firefox, så kan jeg klart anbefale dig at hende den udvidelse som hedder Firebug. Den er super fed til frontend udvikling.
Hvis du gør det, så tjek under Net fanen, under headers og response, til dit dokument, hvilken content-type der bliver sendt retur til browseren.
Så lykkedes det endeligt. egeriis kommentar ledte mig på sporet. Ved at kikke i kildekoden opdagede jeg at æ, ø og å blev vist. Ved en lille ændring i Dreamweaver (Dynamic text - format - Html encode) blev problemet løst.
Jeg kender ikke dreamweaver, men html encode lyder suspekt. Hvis du i browserens "vis kilde" ser "ø" skrevet som "ø" har du lappet, men ikke løst dit tegnsæt problem.
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.