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

Langage PHP Discussion :

json_encode en utf8


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut json_encode en utf8
    Bonjour,

    Mon problème a été résolu de nombreuses fois sur les forums mais je n'ai toujours pas trouvé la solution.

    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
    <?php
    //header('Content-Type: text/plain; charset=utf8') ;
    //mb_internal_encoding("UTF-8");
    $login = $_REQUEST["NomDuCompte"];
    $dns = 'mysql'.':host=localhost'.';dbname=a2sls';
    $connexion = new PDO( $dns, 'root', 'root');
    //$connexion->exec("SET NAMES 'utf8'");
    //$connexion->exec("SET CHARACTER SET 'utf8'");
    $resultat= $connexion->query("SELECT prenom, nom, adresse, cp, ville, telephone, email FROM etudiant join compteutilisateur on etudiant.id = compteutilisateur.idEtudiant where login like '$login'");
    $row = $resultat->fetch(PDO::FETCH_ASSOC);
    /*foreach ($row as $key => $value)
    	//utf8_encode ($row[$key]);
    	utf8_encode($key);
    	//$row = array_map(utf8_encode, $row);*/
    print_r ($row);
    print /*html_entity_decode(*/json_encode ($row)/*)*/;
    print json_last_error()	
    ?>
    Voici mon code PHP, j'affiche juste le JSON de ma requête. Tous les commentaires sont les tests que j'ai fait pour essayer de trouver la solution.

    Le print_r ($row) affiche bien l'accent mais quand je le passe par json_encode il affiche null ; avec bien sûr l'erreur 5.

    Merci

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Billets dans le blog
    17
    Par défaut
    J'avais répondu à une question du même style concernant mon framework:
    L'échange est ici: http://www.developpez.net/forums/d13...au-json-model/

    il vous manque l'appel à la fonction serialize()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    json_encode(serialize($tAccount))
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut
    Bonjour,

    Merci de votre réponse : je viens d'essayer cette solution, et cela ne fonctionne pas. Le json_encode renvoie null.

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Billets dans le blog
    17
    Par défaut
    Essayez plutot ainsi, avec prepare/execute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $connexion = new PDO( $dns, 'root', 'root');
    //$connexion->exec("SET NAMES 'utf8'");
    //$connexion->exec("SET CHARACTER SET 'utf8'");
    $oRs= $connexion->prepare("SELECT * FROM auteur");
    $oRs->execute();
    $row = $oRs->fetch(PDO::FETCH_ASSOC);
     
    var_dump($row);
     
    var_dump(json_encode($row));
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut
    C'est bon j'ai enfin réussi !! Il fallait en fait mettre ces trois lignes à la fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header('Content-Type: text/plain; charset=UTF-8');
    $connexion->exec("SET NAMES 'utf8'");
    print json_encode ($row, JSON_UNESCAPED_UNICODE);
    Si ça peut servir à d'autres personnes.

    PS : Ma bd est aussi en utf8.

    Merci quand même pour votre aide, bonne journée.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/10/2012, 22h35
  2. Migration Oracle 8i WE8DEC => Oracle 9i UTF8
    Par stawen dans le forum Oracle
    Réponses: 3
    Dernier message: 06/01/2005, 10h44
  3. Réponses: 5
    Dernier message: 19/11/2004, 19h16
  4. Convertir une chaine UTF8 en ISO-8859-1
    Par eods dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/08/2004, 16h57
  5. Réponses: 2
    Dernier message: 23/06/2004, 16h06

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