Avatar billede horizon Nybegynder
03. april 2011 - 21:17 Der er 11 kommentarer og
1 løsning

Uforståeligt encoding problem

Jeg har et bette problem:

Jeg har en mysql database med tabel + attribut sat til utf8_unicode_ci, men når jeg henter data fra tabellen så får jeg de famøse firkanter i stedet for æ, ø og å.

min phpfil ser således ud:
<!DOCTYPE html>
<html>
    <head>
        <title>Projektoversigt</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <?php

$db = new MySQLI(xxx, xxx, xxx, xxx);
$st = $db->query("SELECT `by` FROM `postnummer`");
while($row = $st->fetch_row()){
    echo mb_detect_encoding(print_r($row[0], true)) . " " . $row[0];
}
$db->close();

?>
    </body>
</html>
den fortæller mig at alt er kodet som UTF-8.

Jeg har forsøgt med at skifte doctype og meta tag væk fra html5, men det giver samme resultat.

Jeg synes ikke jeg har stødt ind i dette problem før.

Any ideas?
Avatar billede erikjacobsen Ekspert
03. april 2011 - 21:21 #1
Det kunne være fordi dine data er lagt i tabellen som ISO-8859-1, og du viser dem som UTF-8. Men ellers kom med et link.
Avatar billede sortsnak.dk Nybegynder
03. april 2011 - 21:22 #2
Har du prøvet at encode selve php-filen som UTF-8?

Derudover kan du også prøve at sætte charset serverside via:
<?php header('Content-Type:text/html; charset=UTF-8') ?> som første linje i dokumentet.

Held og lykke.
Avatar billede olebole Juniormester
03. april 2011 - 22:33 #3
<ole>

Bemærk, hvad Erik skriver. Alle dokumenter skal være gemt som UTF-8. Hvis data er lagt i tabellen af et ISO-8859-1 dokument, er de ikke i UTF-8 format

/mvh
</bole>
Avatar billede horizon Nybegynder
04. april 2011 - 09:07 #4
Det der undrer mig er at jeg aldrig har haft dette problem før.

Mine prøvedata er lagt i tabellen via phpmyadmin interfacet, men det er sikkert der problemet opstår. Jeg har smidt en formular på siden og det virker som det skal.

Nå, men kast et svar alle sammen :)
Avatar billede erikjacobsen Ekspert
04. april 2011 - 09:12 #5
Det er forståeligt nok, hvis din phpmyadmin kører ISO8859-1. Og det gør den jo sommetider ;)  Mon ikke det kan indstilles et sted.

Jeg samler slet ikke på point, tak.
Avatar billede sortsnak.dk Nybegynder
04. april 2011 - 10:07 #6
Hvad var løsningen så? :)
Avatar billede horizon Nybegynder
04. april 2011 - 10:30 #7
Min phpmyadmin er sat til utf8_unicode_ci i collation, og alle tabeller og attributter ligeså, så input burde håndteres korrekt via interfacet.

Mit IDE gemmer filerne som UTF-8.

Mine sider har forsøgt alle former for encoding tags

Data sendt via formularer på siden til databasen håndteres korrekt, så jeg lader bare være med at bruge phpmyadmin til at indsætte data, og det ser ud til at virke.
Avatar billede sortsnak.dk Nybegynder
04. april 2011 - 10:39 #8
Det lyder mærkeligt, at PhpMyAdmin skulle fejle. Jeg kører utf8_general_ci i min MySql forbindelses-sammenkøring og det virker fint.
Avatar billede erikjacobsen Ekspert
04. april 2011 - 11:11 #9
Hvad databasen er sat til, og hvad websiderne (din og phpmyadmin) er sat til, er to forskellige ting. Jeg siger, at de websider hvor du indtaster data også skal være sat til UTF-8.
Avatar billede olebole Juniormester
04. april 2011 - 21:11 #10
"Min phpmyadmin er sat til utf8_unicode_ci i collation, og alle tabeller og attributter ligeså, så input burde håndteres korrekt via interfacet." >> Nøøhhh ... ikke nødvendigvis.

Hvilken meta er skrevet i PHPMyAdmins dokumenter? Og hvilket tegnsæt er dens dokumenter gemt med? Som Erik nævner, har vi på Eksperten ofte set problemer med netop PHPMyAdmin og dets encoding.

Hvis du hælder data i DB'en via et dokument med en ISO-meta - eller som er gemt som ANSI, så vil indholdet af DB'en ikke være Unicode ... uanset, hvad DB'en er sat til. Garbage in - garbage out!  *o)
Avatar billede horizon Nybegynder
03. maj 2011 - 11:20 #11
Det tyder på at min hosts opsætning af phpmyadmin der er skyld i problemerne. For der er ingen problemer når jeg selv indsætter og udtrækker data udenom phpmyadmin.

Så smid et svar så I kan få nogle points :-)
Avatar billede horizon Nybegynder
18. maj 2011 - 08:54 #12
Nå, så lukker jeg den bare til mig selv :)
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