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 :

Accents avec json_encode


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut Accents avec json_encode
    Bonjour,

    J'ai une variable qui contient un tableau suivant :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    (
        [theater] => Array
            (
                [0] => Array
                    (
                        [name] => Le Casino
                    )
     
                [1] => Array
                    (
                        [name] => Pathé Lingostière
                    )
     
                [2] => Array
                    (
                        [name] => Cinéma Variétés
                    )
     
                [3] => Array
                    (
                        [name] => Pathé-Masséna
                    )
     
                [4] => Array
                    (
                        [name] => Cinéma Rialto
                    )
     
                [5] => Array
                    (
                        [name] => Pathé-Paris
                    )
     
                [6] => Array
                    (
                        [name] => Cinéma Espace Centre
                    )
     
                [7] => Array
                    (
                        [name] => Olympia
                    )
     
                [8] => Array
                    (
                        [name] => Mercury
                    )
     
                [9] => Array
                    (
                        [name] => Le Casino
                    )
     
            )
     
    )
    Lorsque j'utilise la fonction json_encode() pour convertir ce tableau en format json, les valeurs contenant un accent apparaissent en "null".

    J'ai vérifié le charset, les valeurs avec accent = UTF-8 et les autres = ASCII

    Qu'est-ce que je dois faire pour avoir la valeur apparaitre convenablement dans le format json ?

    Merci d'avance!

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    http://php.net/manual/fr/function.json-encode.php

    Il y a cette remarque dans les commentaires du manuel (et d'autres encore sur les problèmes d'encodage et des moyens de les résoudre)
    Take care that json_encode() expects strings to be encoded to be in UTF8 format, while by default PHP strings are ISO-8859-1 encoded.
    This means that

    json_encode(array('àü'));

    will produce a json representation of an empty string, while

    json_encode(array(utf8_encode('àü')));

    will work.
    The same applies to decoding, too, of course...
    RTFMUCFN (read the fucking manuel's users' contributed fucking notes)
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut courtoisie
    Merci pour la réponse.

    Mais si tu lis bien mon post, je dis clairement que les valeurs avec accents sont en UTF-8 déjà... Mais cela me retourne tout de même une valeur null.

    Si je fais un utf8 encode, oui la valeur n'est plus null mais les accents sont remplacé par des symboles.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    json_last_error() peut te donner une piste.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Je viens de tester ceci sur un script UTF-8 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    header('Content-Type: text/plain; charset=UTF-8') ;
     
    $data = array('Théâtre', 'Cinéma', 'Musique') ;
    echo $encoded = json_encode($data) ;
    print_r(json_decode($encoded)) ;
    Et j'obtiens bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ["Th\u00e9\u00e2tre","Cin\u00e9ma","Musique"]Array
    (
        [0] => Théâtre
        [1] => Cinéma
        [2] => Musique
    )
    Montre comment tu traites tes données.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut
    Ah! merci Séb.!!!

    J'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: application/json; charset=utf-8');
    dans la page et maintenant c'est bon!

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

Discussions similaires

  1. Problème d'accent avec fgets
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2006, 07h37
  2. [utf-8] problème d'accents avec gtk+
    Par over_score dans le forum Général Python
    Réponses: 3
    Dernier message: 14/12/2005, 01h43
  3. [C#] Problème accents avec HttpWebRequest
    Par aucean dans le forum C#
    Réponses: 2
    Dernier message: 03/12/2005, 14h40
  4. Problèmes d'accent avec une connexion ODBC et ADO
    Par michael.jacques dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2005, 15h36
  5. Ecrire caractère avec les accents avec vi ?
    Par sekiryou dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 18/05/2004, 17h11

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