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

Langages serveur Discussion :

[JSON - AJAX - PHP] Affichage du caractère €


Sujet :

Langages serveur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Points : 80
    Points
    80
    Par défaut [JSON - AJAX - PHP] Affichage du caractère €
    Bonjour,


    Je fait quelques tests d'un nouveau programme en cours de développement pour transmettre des caractères spéciaux travaillent avec php, javascript (ajax) html et mysql.
    Remarque: je n'utilise pas jquery!

    Voici une chaine test avec des caractères (voire des caractères "spéciaux") se trouvent dans un champ d'une de mes tables mysql:
    tést à /\' " & % € = éàä ., '' â
    Via une requête mysql je récupère ce string dans la variable $data['Enf_Nom'] ( tableau ).

    Voici un très court extrait de mon code php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $myObj = new \stdClass();
    $myObj->EnfNom = base64_encode($data['Enf_Nom']);
    $myJSON = json_encode($myObj);
    echo $myJSON;
    exit(0);

    pour l'encodage j'utilise en php la fonction "base64_encode"
    et pour le décodage en ajax( javascript) j'utilisé la fonction "atob"


    Les informations sont envoie avec l'instruction echo $myJSON; vers un deuxième fichier (en réponse d'une requête ajax) et suit l'affichage du résultat en html

    Voici un très court extrait de mon fichier Ajax:

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var json = JSON.parse(http.responseText);
    document.getElementById("Nom").value = atob(json["EnfNom"]) ;


    Le résultat est affiche en html dans un champ "Nom" (c'est un champ input avec id="Nom")

    L'affichage n'est pas

    tést à /\' " & % € = éàä ., '' â
    comme j'aurais aimé mais comme suivant:

    Nom : bug.png
Affichages : 480
Taille : 1,4 Ko

    toutes les caractères sont bien affiché à part le signe !

    Pour information : Ma table de la base de données est encode utf8_general_ci
    et mais deux fichiers php sont encodé en en UTF8(sans BOM)

    Quelqu'un aura une idée pourquoi le signé € n'est pas affiché correctement, puis comment faire pour avoir un affichage correct?

    Merci d'avance pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Points : 80
    Points
    80
    Par défaut Solution
    Bonjour,

    J'ai trouvé une solution pour gérer l'affichage du caractère de "".

    J'ai ajouté la ligne suivante dans mon code php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom = str_replace(chr(128), "€", $data['Enf_Nom']);

    et adapté mon code ...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $myObj = new \stdClass();
    $nom = str_replace(chr(128), "€", $data['Enf_Nom']);
    $myObj->EnfNom = base64_encode($nom);
    $myJSON = json_encode($myObj);
    echo $myJSON;
    exit(0);

    au part avant j'avais entre autres essayé le code suivant

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom = str_replace('€', "€", $data['Enf_Nom']);

    mais cela ne fonctionne pas!!!???

    Pourtant en me connectant avec phpmyadmin a mon serveur mysql j'ai bien vérifié que le signe "€" (sans les guillemets) est bien présent.

    puis pour pouvoir afficher le signe euro en html je du aussi adapter mon code javascript (ajax) en ajoutant une fonction htmlEntities ("tricoté" sur mesure)

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("Nom").value = htmlEntities(atob(json["EnfNom"])) ;


    voici la fonction "htmlEntities"

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function htmlEntities(str) {
        return String(str).replace('€', '\u20AC');
    }

    la aussi j'avait essaie le code suivant au part avant

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function htmlEntities(str) {
        return String(str).replace('€', '€');
    }
    mais cela ne fonctionne pas!!!???

    Bref mon problème est résolu et j’espère que ses informations pourront être utile à quelqu'un

    J'ai passé plusieurs heures de recherche en faisant des nombreuses essais pour résoudre ce problème!

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

Discussions similaires

  1. [AJAX] script simple AJAX PHP affichage balise div et requête mysql
    Par Invité dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/02/2009, 14h21
  2. Affichage de caractères PHP
    Par na7fc92 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 04/02/2009, 14h16
  3. [AJAX] Ajax et Json - création d'un .json par PHP
    Par versus68 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2008, 17h18
  4. [AJAX] affichage de caractères accentués
    Par vincent44 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/01/2008, 16h26
  5. [AJAX] Affichage des caractères spéciaux
    Par mitmit dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/04/2007, 13h47

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