Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/05/2011, 16h36   #1
Invité régulier
 
Inscription : février 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 23
Points : 8
Points : 8
Par défaut json_encode et accent

Bonjour à tous,

Je viens vers vous car j'ai un petit soucis avec javascript depuis plusieurs jours et je ne trouve pas la solution. Je suis en train de développer un outil dans le cadre de ma mission d'entreprise en Ext-js 3.
Mon problème vient du faite que les données que je rapatrie dans ma grid ne comprennent que les données ne comportant pas d'accent (problème de format visiblement...).
Ma base de donnée est une base Hyperfile SQL et je passe par un lien odbc. La connexion et la récupération des données sont ok mais suite au Json_encode(obligatoire pour une grid Extjs je crois), les données avec accent disparaissent...
C'est bien un probleme de json_encode...mais ou? Pourquoi????????

Voila mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php
 
        session_start();
 
        require_once("../Connect.php");
 
        $requete = "SELECT Critere.IDCritere...";
        //echo $requete;
 
        $resultat = odbc_exec($connexion,$requete);    
        $critere = array();
 
        while($data = odbc_fetch_object($resultat)){
                $critere[] = $data;
        }
 
        echo json_encode($critere);     
 
?>
Un print_r sur $critere me renvoi bien un résultat correct. Ai-je oublié quelque chose?

Merci de votre aide
DonMero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h19   #2
Membre éclairé
 
Homme Damien Attanasio
Développeur informatique
Inscription : février 2007
Messages : 340
Détails du profil
Informations personnelles :
Nom : Homme Damien Attanasio
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : février 2007
Messages : 340
Points : 307
Points : 307
Essai de faire un utf8_encode sur tes données avant de faire le json_encode

Ici la description json_encode : http://php.net/manual/fr/function.json-encode.php
Citation:
Cette fonction ne fonctionne qu'avec des données encodées UTF-8.
madevilts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h21   #3
Invité régulier
 
Inscription : février 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 23
Points : 8
Points : 8
Je t'avouerai que j'ai testé mais probablement pas ou il fallait...
Peut tu m'expliquer ou?
DonMero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h30   #4
Membre éclairé
 
Homme Damien Attanasio
Développeur informatique
Inscription : février 2007
Messages : 340
Détails du profil
Informations personnelles :
Nom : Homme Damien Attanasio
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : février 2007
Messages : 340
Points : 307
Points : 307
Il faut faire qqchose du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
while($data = odbc_fetch_object($resultat)){
  //Pour chaque ligne de résultat
  $ligne = array();
  foreach($data as $cle => $valeur)
  {
    //On encode en utf8 puis on stocke dans la ligne
    $ligne[$cle] = utf8_encode($valeur);
  }
  $critere[] = $ligne;
}
madevilts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h33   #5
Candidat au titre de Membre du Club
 
Homme
Lycéen
Inscription : mai 2011
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 29
Points : 10
Points : 10
Bonjour,

Pour moi le problème vient de cette partie de JSON :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 case (($ord_var_c & 0xFC) == 0xF8):
                            // characters U-00200000 - U-03FFFFFF, mask 111110XX
                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                            $char = pack('C*', $ord_var_c,
                                         ord($var{$c + 1}),
                                         ord($var{$c + 2}),
                                         ord($var{$c + 3}),
                                         ord($var{$c + 4}));
                            $c += 4;
                            $utf16 = $this->utf82utf16($char);
                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
                            break;
Smallstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 08h58   #6
Invité régulier
 
Inscription : février 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 23
Points : 8
Points : 8
C'est parfait. Merci beaucoup à tous
DonMero est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h09.


 
 
 
 
Partenaires

Hébergement Web