Avatar billede Slettet bruger
09. november 2010 - 07:27 Der er 11 kommentarer og
1 løsning

UTF8 charsets, db og php funktioner

Min mysql database indeholder et specielt bynavn: část

Når jeg henter det fra mit php script og udskriver det på en side, bliver det ikke vist korrekt.

Jeg sætter charset som utf8 via header() og meta tag.

Mysql tabellen er utf8_general_ci.

Jeg har prøvet at bruge htmlentities($var,ENT_QUOTES,'UTF-8'), utf8_encode() og utf8_decode i alle mulige kombinationer.
Avatar billede Slettet bruger
09. november 2010 - 07:28 #1
Nå, eksperten kunne så heller ikke udskrive bynavnet korrekt :)
Avatar billede The_Buzz Novice
09. november 2010 - 08:03 #2
På dansk - hvad er det bynavn? :P
Avatar billede The_Buzz Novice
09. november 2010 - 08:05 #3
č ?
Avatar billede The_Buzz Novice
09. november 2010 - 08:08 #4
ok karakteren viser sig hvis man skriver č i google og trykker enter :D

Æ Ø Å problemer har jeg haft mange af, men ved ikke helt om det her er det samme?
Avatar billede repox Seniormester
09. november 2010 - 08:55 #5
č har jo heller ikke noget med UTF-8 at gøre.
Du skal beslutte dig for om du vil køre med HTML entities eller UTF-8 charset.

Ordet 'Část' er ikke krævende for UTF-8, men typisk ligger problemet i man ikke er konsistent med tegnsættet - altså, Din database, din fil og klienten er ikke altid enige om tegnsættet. Men i dit tilfælde er problemet vist dine entities.
Avatar billede Slettet bruger
09. november 2010 - 08:56 #6
Æ, Ø og Å kan klares med htmlentities() men så snart der er tale om mere "eksotiske" tegn opstår der problemer.
Avatar billede Slettet bruger
09. november 2010 - 09:00 #7
repox, jeg bruger UTF8 i mysql, header og meta. Hvis jeg blot hiver variablen og udskriver den (uden htmlentities) vises underlige tegn: ?�

Så hvad har jeg overset?
Avatar billede repox Seniormester
09. november 2010 - 09:02 #8
Uden at kunne se din kode, dine headers fra apache og så videre, er det enormt svært at gætte på problemet.
Avatar billede Slettet bruger
09. november 2010 - 09:12 #9
https://www.xfitnet.com/test.php

<?

header('Content-type: text/html; charset=UTF-8');
require_once("../defs.php");

print '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>';

list($test) = mysql_fetch_row(mysqlq("select city from db where countrycode='cz' and zip='14002'"));
print "Resultat: $test";

print '</body></html>';

?>

Bynavnet kan ses her: http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=Praha+4-Kr%C4%8D+(%C4%8D%C3%A1st)&sll=37.0625,-95.677068&sspn=53.432436,79.013672&ie=UTF8&hq=&hnear=Kr%C4%8D,+Prague+4,+Czech+Republic&t=h&z=14
Avatar billede repox Seniormester
09. november 2010 - 09:42 #10
Kig her:
http://err0r.dk/test/charset.php

Tabellens tegnset er korrekt, filen er gemt som UTF-8 (eller sender UTF-8 header ud) og jeg fortæller databasen at der skal kommunikeres med UTF-8 ved hjælp af SET NAMES som du kan læse mere om her:
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
Avatar billede Slettet bruger
09. november 2010 - 09:52 #11
Lækkert, SET NAMES utf8 gjorde forskellen. Jeg har aldrig hørt om den mulighed før, men det må jeg lige få fulgt op på.

Tak for hjælpen, du smider bare svar :)
Avatar billede repox Seniormester
09. november 2010 - 09:56 #12
Det fik du her.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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