[Astuce] Caracteres speciaux et XMLHTTPREQUEST

Eléphant du PHP | 62 Messages

18 juil. 2005, 18:02

Salut,

beaucoup, sur beaucoup de forum ont des probleme avec XMLHTTPREQUEST pour les caractere scpeciaux (accents etc...)

Personne n'avais jusqu'alors trouvé de solutions (du moins j en ai pas trouvé apres des heures et des heures de navigation sur les forum js, XML etc... meme anglophone et germanophone)

Et bien je vous propose la/les solution(s)

La principale methode consiste a ne pas utiliser de champs :

Code : Tout sélectionner

variable.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
et a utiliser la methode GET plutot que POST.

cela vous permettra de faire transiter les variables sans pertes des accents etc... et donc d'éventuellement stocker dans une BDD.

Pour le meme resultat vous pouvez aussi :

garder le champs et la methode POST mais faire escape() sur vos valeur puis rawurldecode() o moment de gérer la variable en PHP

Enfin :

le principal probleme arrive lors de l affichage des caracteres speciaux via XMLHTTPREQUEST. Il vous suffit alors de mettre:

Code : Tout sélectionner

header('Content-Type: text/xml; charset=utf-8');
dans votre page php... et ca marche :bounce:

Voila je pense que je vais soulagé bcp bcp de monde avec ces 3 idées...
Si vous avez des questions n hesitez pas me contacter...

Shrito

C moi
Invité n'ayant pas de compte PHPfrance

07 août 2005, 22:42

Salut !

Merci pour ton post ! il m'a bien aidé !!!

Dans mon cas c'etait l'inverse que je devais faire :

rawurlencode() en php puis unescape() en javascript pour reafficher ma page avec les accents corrects :)

Pour info, voici une page très intéressante qui permet de voir les différents codages php/javascript :

http://jesus2099.free.fr/blog/2005/07/t ... hp-et.html

Je suis tombé dessus pendant mes recherches.

los os
Invité n'ayant pas de compte PHPfrance

12 avr. 2010, 21:47

Merci mille fois!!!

Eléphant du PHP | 398 Messages

14 avr. 2010, 10:09

J ai eu également un soucis de caractères spéciaux avec l envoi de données par AJAX, ce que j'ai fais, c est que j'ai chercher une methode qui me les convertit en caractère html (une sorte de htmlentities()), et ça a résolu mon soucis (car le stocke en html dans ma base de données).
Ainsi, avant l'insertion, j'ai un simple urldecode() à faire sur les données texte que je récupère.

http://www.frinux.fr/projects/js_converthtml/ pour tester
et
http://www.javascriptfr.com/codes/CONVE ... 45204.aspx

Par contre, j'ai du modifier le tableau de correspondance en enlevant certaines lignes car elle pouvait poser soucis.

Mais ce script m'a bien aidé.
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Mammouth du PHP | 661 Messages

14 avr. 2010, 10:34

salut !...


dans ses cas là mais seulement dans un souhait d'apprentissage et de compréhension des codes JS, quand j'ai commencé en javascript, j'ai cherché le pendant des fonction que ja maitrisé en PHP
ce qui m'a permit de tombé sur phpjs.org

et dans ton cas, regarde cette fonction ;) htmlentities() tu trouvera une bonne méthode pour construire ta propre fonction JavaScript en employant exclusivement les fonctions natives de JavaScript !...

@++

Eléphant du PHP | 398 Messages

14 avr. 2010, 10:40

Tres intéressant ton lien :D . Je pense que je vais plutôt utiliser cette fonction à la place de celle que je viens de poster.
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Torcan
Invité n'ayant pas de compte PHPfrance

20 mars 2011, 00:24

Merci pour ta solution qui fonctionne très bien.