Gellyfusk Skrevet 6. mai 2012 Del Skrevet 6. mai 2012 (endret) Dette er muligens mer database-relatert enn PHP pga. MySQL, men poster her fordi det har med web å gjøre. Jeg vet heller ikke om problemet ligger i databasen, PDO eller noe annet. Jeg holder på med en nettside som benytter PHP og MySQL (bruker PDO til å kommunisere med db). Nettsiden er under tidlig utvikling, har nylig lagt til oppdatering av db-funksjoner og oppdaget at jeg har noe kluss i charset. DB: Database har Default collation "utf-8 - default collation", og jeg har kontrollert at både tabell og kolonner er satt til det samme. HTTP: Header er satt til charset=utf-8 Hvis jeg skriver i f.eks. en input, sender med POST-data og lagrer i DB så vil tegnene vises riktig på nettsiden, men i DB ser det f.eks. slik ut: ÆØÅÆØÅÆØÅ Hvis jeg endrer DB direkte (i Workbench) slik at det står ÆØÅÆØÅ så får jeg �-tegn på nettsiden (mens DB viser riktig). Hvis jeg endrer HTTP-header til iso-8859-1 så forsvinner � og teksten viser riktig på nettsiden. Jeg forstår ikke hvorfor, og om jeg kommer til å kjøre meg i en grøft eller i fremtiden må konvertere masse skit. Hvorfor funker det bare når encodingen ikke samsvarer? Jeg vil ideelt ha UTF-8 på begge. Endret 6. mai 2012 av Gellyfusk Lenke til kommentar
Gellyfusk Skrevet 6. mai 2012 Forfatter Del Skrevet 6. mai 2012 (endret) En liten oppdatering/klarifisering. Når jeg setter alt til UTF-8 så ser det ut til at nettsiden kan fungere ordentlig, men hvis jeg går i Workbench så vil ikke tegnene vises ordentlig. Dvs. hvis jeg endrer noe i Workbench (skriver æøå) så vil ikke dette vises korrekt på nettsiden. I Workbench må det se slik ut for at nettsida skal vise rett: ÆØÅÆØÅÆØÅ Da funker også innskrevne oppdateringer fra nettsiden (f.eks. post-data). Endret 6. mai 2012 av Gellyfusk Lenke til kommentar
MikkelRev Skrevet 6. mai 2012 Del Skrevet 6. mai 2012 Problemer med æøå / skandinaviske tegn? Klikk her! Lenke til kommentar
Gellyfusk Skrevet 7. mai 2012 Forfatter Del Skrevet 7. mai 2012 (endret) Meget detaljert og god post, men det besvarte ikke det jeg egentlig har problemer med akkurat nå. DB og HTTP header er UTF-8. Nettsida funker helt fint, men i Workbench så vises det feil (som om det var latin1/ISO-8859-1, selv om alt er UTF-8). Jeg skulle ønske jeg hadde muligheten til å kunne redigere via Workbench. I tillegg så vet jeg ikke hvorfor det oppstår, og tenker at det sannsynligvis er en grunn som burde fikses. Endret 7. mai 2012 av Gellyfusk Lenke til kommentar
MikkelRev Skrevet 7. mai 2012 Del Skrevet 7. mai 2012 "Meget god post" sier du, men du leste ikke gjennom tråden. Det er en tråd som har blitt satt som sticky fordi folk har det med å lage sin egen nye tegnsettproblemtråder hver eneste uke, og alle tror at deres tilfelle er ekstra spesielt. Du må passe på at du også lagrer php-filene som UTF-8, og at UTF-8 er satt i databasen både på databasenivå, tabellnivå og kolonnenivå. Tekst må komme inn i databasen etter at du har satt UTF-8 på databasen, og inn i php-filen etter at du har satt UTF-8 på editoren. Lenke til kommentar
Crowly Skrevet 8. mai 2012 Del Skrevet 8. mai 2012 Har du med PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ? Fra http://php.net/manual/en/ref.pdo-mysql.php This is the way to force mysql PDO driver to use UTF-8 for the connection : $pdo = new PDO( 'mysql:host=hostname;dbname=defaultDbName', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") ); Eller det kan hende du må ta utf8_encode() eller utf8_decode() til hjelp. Lenke til kommentar
Gellyfusk Skrevet 9. mai 2012 Forfatter Del Skrevet 9. mai 2012 (endret) "Meget god post" sier du, men du leste ikke gjennom tråden. Jeg skimmet den, så at det jeg spurte om ikke stod skrevet der. Du har derimot åpenbart ikke lest posten min, for jeg har ikke spurt om det du nevner, og at du tipser meg om ting jeg har skrevet at jeg har kontrollert. Som jeg prøvde å forklare i oppfølgerposten (før noen svarte) så funker tegnsett på nettsida nå, men det er noe rart, fordi hvis jeg kobler meg til databasen i Workbench så vises alt feil. Det vises korrekt på nettsiden. Filene er lagret med UTF-8, header er UTF-8, kommunikasjon mellom PDO og DB funker fint, og DB er satt til UTF-8. Problemet er tilsynelatende at Workbench nå prøver å vise innholdet som ISO-8859-1, men at det er lagret som UTF-8. Har du med PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ? Fra http://php.net/manua...f.pdo-mysql.php This is the way to force mysql PDO driver to use UTF-8 for the connection : $pdo = new PDO( 'mysql:host=hostname;dbname=defaultDbName', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") ); Eller det kan hende du må ta utf8_encode() eller utf8_decode() til hjelp. Dette ser derimot ut til å løse problemet. Jeg hadde ikke dette med før, men hadde "mysql:host=hostname;dbname=defaultDbName;charset=UTF-8" som det sto alle andre steder. Takk Endret 9. mai 2012 av Gellyfusk Lenke til kommentar
Yawa Skrevet 1. juni 2012 Del Skrevet 1. juni 2012 (endret) Har du med PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ? Fra http://php.net/manua...f.pdo-mysql.php This is the way to force mysql PDO driver to use UTF-8 for the connection : $pdo = new PDO( 'mysql:host=hostname;dbname=defaultDbName', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") ); Eller det kan hende du må ta utf8_encode() eller utf8_decode() til hjelp. hva blir forskjellen i forhold til denne løsningen: $pdo = new PDO( 'mysql:host=localhost;dbname='.$db_name, $db_user, $user_pw ); $pdo -> exec("SET CHARACTER SET utf8"); nederste linje kontra array-løsningen? Endret 1. juni 2012 av Yawa Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå