XMLHTTPREQUEST et caractere speciaux

XMLHTTPREQUEST et caractere speciaux - HTML/CSS - Programmation

Marsh Posté le 18-07-2005 à 17:58:47    

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 :
  1. 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 :
  1. 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


Message édité par shrito le 18-07-2005 à 18:00:01
Reply

Marsh Posté le 18-07-2005 à 17:58:47   

Reply

Marsh Posté le 18-07-2005 à 18:02:00    

Moi je fous tout en utf-8 du début à la fin :) J'ai du coup résolu pas mal de choses...

Reply

Marsh Posté le 18-07-2005 à 18:10:30    

ouais.. je crois que je vais faire comme toi maintenant ;)
serieux je susi trop content ca fait trois jour que je suis dessus et finalement... les solutions etait toute bete...
 
enfin bon ils auraient pu s arranger pour que on puisse reellement modifier le charset avec setRequestHeader parce que la on peut pas..

Reply

Marsh Posté le 18-07-2005 à 18:11:28    

On peux pas faire :

variable.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');


:??: Ce serait logique :heink:

Reply

Marsh Posté le 18-07-2005 à 18:27:31    

bah justement non... ca passe pas...

Reply

Marsh Posté le 26-07-2005 à 08:43:33    

Moi je m'en sors pas... en fait, lors de la génération de la page de réponse PHP, je met l'header comme shrito l'a dit plus haut, et voilà là c'est OK ça s'affiche bien.
 
Pour éviter de faire plein de requêtes, je stock ce texte de sortie dans une variable de session que je ré-affiche plus tard dans le cas d'un rechargement ou changement de page... et là c'est la cata ça m'affiche à nouveau des caractères bizarres.
 
Alors pourquoi ? C'est la question... en effet, quand je met à jour le contenu de la page en live, j'affiche directement le contenu de mon fichier via la variable de session fraichement créer, et ensuite, quand je fais un rechargement de page, c'est exactement cette même variable que j'utilise sauf que les accents ne passent plus...
 
Un peu de code si vous voyez pas le problème... Voici mon code de génération :
 

Citation :

$chat = chatread($minichatlines); (routine qui lis un fichier particulier)
$_SESSION['minichattxt'] = $chat;
header('Content-Type: text/xml; charset=utf-8');
echo $chat;


 
Donc avec le php précédent, celui sur lequel xmlhttp fait un GET d'ailleurs, le résultat est récupéré et affiché via un

Citation :

document.getElementById("chat-window" ).innerHTML = xmlhttp.responseText;


 
Jusqu'ici aucun problème, les accents sont bien là ! Par contre, pour éviter de mettre à jour ce texte à chaque chargement de page, j'utilise cette variable de session que j'ai créé. Je la rappelle donc et l'inclus directement... et là c'est la cata !
 
Ca me dépasse ;) Merci de vos idées !
 
PS : Au passage j'ai réussi à régler le problème en settant mon charset en UTF8 au niveau de ma page principale normale... mais est-ce vraiment une bonne solution ?


Message édité par TigrouMeow le 26-07-2005 à 08:52:04
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed