[JS]Accent avec AJAX

Bonjour,

ça a l’air tout bête comme question mais comment utilisé une variable contenant un accent ou un espace avec Ajax.

Si je veux envoyer la requête je suis obligé de spécifier un type sans accent avec la commande suivante non ?

Et forcément si j’envois un post contenant une zone de texte ça ne fonctionne plus. Et Ajax il me semble impose ce content-type. Y’a quelqu’un qui voit une autre solution ?

J’ai eu le même problème y a pas longtemps.

utilise ça sur les chaines que tu envoies

function urlencode(ch) {
ch = ch.replace(/[ ]/g,"+")
return escape(ch)
}

et quand tu retourne les données htmlentities() (si tu utilies php)

monobjet.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=iso-8859-1") peut-être?

Merci vous m’avez un peu mis sur la voix mais par contre je me suis rendu compte que le problème est loin d’être aussi simple et je suis pas le premier a qui ça arrive voici 2 liens si ça vous intéresse :

http://infotech.free.fr/wordpress/index.ph…odings-problems
http://developpeur.journaldunet.com/tutori…-speciaux.shtml

Bon je retourne a mon casse-tête :pt1cable:

peut être une url pour qu’on puisse tester ?

désolé du up, mais j’ai exactement le même problème :smiley:

non, ça ne marche pas, malheureusement :frowning:

personnellement, je cherche à envoyer un formulaire soit avec httpxmlrequest (en ajax, quoi), soit normalement, si le javascript est désactivé.
La seule méthode que j’ai trouvée, c’est de faire $_POST = array_map(utf8_decode, $_POST); au début du fichier php appelé directement par ajax, vu qu’après le code qui traite réellement les données doit être indépendant de la méthode d’envoi du formulaire (avec ou sans javascript).
Par contre, je ne trouve pas ça super beau, donc si jamais vous aviez une méthode plus propre …

D’après le lien indiqué par dredre, une autre solution consiste à aller voir dans la config d’Apache 2 et de mettre le AddDefaultCharset à Off

ça ne marche pas chez moi.
Par contre, je me permet de faire le up du topic pour dire que j’ai trouvé la solution :
<?php
header(‘Content-Type: text/html; charset=ISO-8859-1’);
?>
au tout début du code php appelé par ajax résoud parfaitement le problème, et en plus il n’y a pas besoin de modifier la configuration du serveur.
Voilà, j’espère que ça pourra servir à d’autres :slight_smile:

pour ceux comme moi qui rencontreraient encore le problème après tout ça, on peut utiliser utf8_decode() sur le fichier d’arrivée.

urlencode(); est assez dangereux a ce qu’on dit

monobjet.setRequestHeader("Content-type","application/x-www-form-urlencoded")

et dans mon script php utf8_encode("truc");
Ca dépends comment sont encodées les données dans vos bdd aussi