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

  1. ###raw>post.musername###
    Membre régulier
    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:



    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
      0  0

  2. #2
    Membre régulier
    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!

###raw>template_hook.ano_emploi###