Bonjour, je suis désespéré avec l'encodage que j'ai en horreur car je n'y comprends rien...
A part utf8_encode/utf8_decode, rien ne marche comme je voudrais.
Alors je vais tout vous décrire en détails de mes fichiers en espérant que quelqu'un puisse m'aider,
sur mon application tout s'affiche bien... sauf que là, je passe par de l'ajax, je récupère des données dans mon fichier xml dont certaines ont des accents, je les vois nickel avec l'accent, mais après pour compliquer la chose, je voudrais faire une redirection avec cette valeur passées en GET.
Je vais mettre en commentaires ce qui a été testé, j'ai testé plusieurs combinaisons de truc, je sais que c'est la méthode bourrin, mais comment savoir ce qui cloche lorsque vous affiché la valeur par un écho et que vos accents s'affichent bien et qu'après en GET, ça ne passe pas, sachant que le GET permet ensuite de faire une requête en base de données ou tout est mis avec accent.
Les en-tête testés de mon XML :
ensuite j'avais mes valeurs (dont des accents) qui étaient insérées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 header('Content-Type: text/xml;charset=utf-8'); echo("<?xml version='1.0' encoding='UTF-8' ?>"); //header('Content-Type: text/xml;charset=ISO-8859-15'); //echo("<?xml version='1.0' encoding='ISO-8859-15' ?>");
Précision, j'ai aussi testé les accents avec é etc... pour les fonctions html.
Ensuite un formulaire normal ou je récupère la valeur récupérée en ajax, puis je la transmets sur un fichier et quand je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 echo("<option>".$element."</option>"); //echo(utf8_encode("<option>".$element."</option>")); //echo(htmlentities("<option>".$element."</option>")); //echo(htmlspecialchars("<option>".$element."</option>"));
Bon en fait le echo fonctionne la plupart du temps, ça m'affiche bien le truc, mais quand je fais ensuite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 echo $_POST['element']; //echo utf8_decode($_POST['element'];) //echo htmlentities($_POST['element'];) //echo htmlspecialchars($_POST['element'];)
la redirection plante (ma redirection 404 s'exécute)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // header('Location: '.URL_LOC.$_POST['element']); // header('Location: '.utf8_decode(URL_LOC.$_POST['element'])); ...
Et quand j'enlève la redirection, le é est représenté par "%E9".
Voilà, j'en ai marre, je m'y prends surement mal, mais ça c'est ma hantise l'encodage dans le développement. Je m'en sortais tout le temps par des simples utf8_encode ou decode, urlencode, etc... et des é etc... du bidouillage quoi.
Auriez vous une idée? Merci de m'avoir lu
Partager