IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

json_encode et accent


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 19
    Points
    19
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    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
    Cette fonction ne fonctionne qu'avec des données encodées UTF-8.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Je t'avouerai que j'ai testé mais probablement pas ou il fallait...
    Peut tu m'expliquer ou?

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Il faut faire qqchose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    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 : 19
    Points
    19
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    C'est parfait. Merci beaucoup à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accents avec json_encode
    Par WeDgEMasTeR dans le forum Langage
    Réponses: 6
    Dernier message: 27/05/2013, 23h38
  2. json_encode json_decode et les accents
    Par monlou dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/2012, 08h52
  3. identification lettre (pb accent)
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 14/12/2002, 02h59
  4. que deviennent mes accents ?!
    Par petitdns dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2002, 09h32
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo