2011-09-21 9 views
1

J'ai une entrée codée JSON dans mon MySQLphp json_decode problème utf8

[{"0":{"town":"İstanbul","location":1},"1":{"town":"Eskişehir","location":1},"orderDay":"2011-09-20"}] 

Quand je reçois ces données de Mysql je reçois comme il est. Exactement le même. Mais quand j'essaye de le décoder, utf8 change de caractère. Comme "İ" ou "ş" ne décode pas comme ils sont. Ils ressemblent à "u015f"

Mon MySql est utf8. Et mes rangs sont aussi utf8. J'ai

header('Content-Type: text/html; charset=utf-8'); 

en haut de mon fichier php. J'ai aussi

mysql_query("SET NAMES 'utf8' "); 

après que je me suis connecté à la base de données.

Alors, que dois-je faire pour décoder mes données avec des caractères utf8?

+0

S'il vous plaît montrer les pièces pertinentes de votre code ... –

+0

Décodez-vous le json dans un autre fichier php? – SnatchFrigate

+0

Oui Arraché. Le fichier que je code mon tableau en json est dans un autre fichier php. Il code le tableau et l'insère dans MySql. Et j'essaie de récupérer ces données de Mysql et comme je l'ai dit, je comprends exactement la même chose. Mais quand j'essaye de le décoder, ça change les caractères utf8 – zbgokalp

Répondre

0

codant pour un décodage des caractères accentués semble fonctionner correctement ici

http://codepad.org/7Uh9R3fY

avec ce code

<? 
    $str = json_encode(array(name => 'ş')); 
    echo $str; 
    print_r(json_decode($str)); 
?> 

et si vous voyez « u015f » comme valeur alors vous manque probablement une barre oblique avant cette séquence d'échappement, alors êtes-vous sûr que votre code ne supprime pas cette barre oblique?

0

Si vous utilisez votre navigateur pour regarder ceci, essayez d'encoder UTF8 ou autodetect. Dans Chrome, cela se fait à Outils -> Encodage