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 : 535
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