caractères spéciaux en javascript

caractères spéciaux en javascript - HTML/CSS - Programmation

Marsh Posté le 28-09-2006 à 19:08:08    


Bonjour,
 
Lorsque je cherche à afficher du texte dans 'alert()' en javascript, il me remplace tous les caractères accentués par le caractère ?
J'ai essayé d'utiliser le formattage spécial du style é ou é mais il m'affiche ces chaînes telles quelles.
 
Vous avez une idée?
 
Cdt,
 
 
PS: ces chaines proviennent d'un retour de fonction PHP exécuté à la sauce AJAX..
 

Reply

Marsh Posté le 28-09-2006 à 19:08:08   

Reply

Marsh Posté le 28-09-2006 à 22:20:01    

Tu as précisé le codage ?

Reply

Marsh Posté le 28-09-2006 à 22:34:09    

c'est-à-dire le "codage" ?

Reply

Marsh Posté le 28-09-2006 à 22:54:50    

encoding charset toussa koi

Reply

Marsh Posté le 28-09-2006 à 22:57:02    

Reply

Marsh Posté le 29-09-2006 à 10:44:23    

merci bien mais aucune solution ne marche... ca m'affiche la chaîne telle quelle...\352 etc...
je lâche l'affaire, ca me gonfle, merci encore..

Reply

Marsh Posté le 29-09-2006 à 11:08:10    

Faudrait peut être que tu arrête la drogue hein :o
 
J'ai testé et ça marche :o

Code :
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <script>
  6. alert('M\351nage \340 trois.')
  7. </script>
  8. </body>
  9. </html>

Reply

Marsh Posté le 29-09-2006 à 11:42:15    

utf8_encode(), apparement, ca marcherait, en fait...

Reply

Marsh Posté le 29-09-2006 à 11:43:49    

Citation :

Faudrait peut être que tu arrête la drogue hein


 
J'ai arrété, espèce de petit plaisantin :|
 
Et quand je dis que quelque chose ne marche pas, c'est qu'elle ne marche pas, même si ma description de l'erreur manque de précision.

Reply

Marsh Posté le 29-09-2006 à 11:53:56    

paowz a écrit :

Citation :

Faudrait peut être que tu arrête la drogue hein


 
J'ai arrété, espèce de petit plaisantin :|
 
Et quand je dis que quelque chose ne marche pas, c'est qu'elle ne marche pas, même si ma description de l'erreur manque de précision.


Tu donnerais plus d'infos au lieu d'un ca marche pas, on pourrait t'aider.
Alors tu t'énerves pas et tu nous donnes les informations dont on a besoin pour t'aider

Reply

Marsh Posté le 29-09-2006 à 11:53:56   

Reply

Marsh Posté le 29-09-2006 à 12:02:46    

Citation :

Alors tu t'énerves pas et tu nous donnes les informations dont on a besoin pour t'aider


 
là, c'est toi qui t'énerve, non?
 
les infos, elles sont dans le premier post.
Il s'agit d'afficher du contenu en provenance d'action AJAX. Ton exemple marche forcément mais ne s'applique pas à mon cas.
En encodant en UTF8 ce qui semblerait être de l'iso-8851.. là ca marche.

Reply

Marsh Posté le 29-09-2006 à 12:13:05    

Passer ta page en UTF8 ne répond pas entièrement à la question
Car là tu mets des accents dans les alerts.
 
Tu pourrais quand même nous préciser ce qui ne fonctionnait pas dans ce que tu faisais.
tu as testé mon code ?
tu as fait quoi de ton coté ?


Message édité par gatsu35 le 29-09-2006 à 12:27:43
Reply

Marsh Posté le 29-09-2006 à 12:40:41    

Honnêtement, je ne vois pas très bien ce qui cloche.
J'ai l'impression que lorsqu'on fait des requêtes async avec AJAX et que celles-ci attaquent la base de données, les données n'ont pas le même charset que si elles étaient fournies au moyen d'un submit..
le workaround que j'ai trouvé est d'encoder en UTF8 ce qui semble être de l'iso-8851.
Ca marche comme ca pour ce que j'ai fait, mais je ne saurais pas t'expliquer le pourquoi du comment...
Pour moi, ca vient du coté client.. je suis sous firefox, est-ce que firefox réagit différement que IE en ce qui concerne AJAX et les charsets..
Je ne sais pas..
Ca fait beaucoup de paramètres et il en devient difficile de 'diagnostiquer' l'origine du problème...
Tout ce que je sais, c'est que le serveur ne traite pas les données avec le même charset lorsqu'elles viennent d'une procédure AJAX (attention, qd je dis "je sais", c'est sur la base de ce que je constate..)
 
voila :)

Reply

Marsh Posté le 29-09-2006 à 12:43:10    

Si tu veux faire de l'ajax, il faut que tous les envoies vers le navigateur se fassent avec le même charset que celui de la page.
Sinon, t'auras toutes les chances que ca se passe mal et je paris que c'était ton probléme.

Reply

Marsh Posté le 29-09-2006 à 12:44:21    

Mais il me semblait que xmlHttpRequest ne travaillait qu'avec de l'UTF8

Reply

Marsh Posté le 29-09-2006 à 13:52:10    

omega2 a écrit :

Si tu veux faire de l'ajax, il faut que tous les envoies vers le navigateur se fassent avec le même charset que celui de la page.
Sinon, t'auras toutes les chances que ca se passe mal et je paris que c'était ton probléme.


gatsu35 a écrit :

Mais il me semblait que xmlHttpRequest ne travaillait qu'avec de l'UTF8


Vous avez tous les deux raisons :o
 
En fait sur les retour du xmlHttpRequest il y a deux solutions:
- utiliser responseText, et là pas de choix c'est forcément renvoyé en UTF-8
- utiliser responseXML, et là il est possible de spécifier l'encodage du flux retourner en mettant dans l'entête:

Code :
  1. <?xml version="1.0" encoding="SkeTuVeux" standalone="yes"?>


Message édité par anapajari le 29-09-2006 à 13:52:43
Reply

Marsh Posté le 29-09-2006 à 14:26:40    

jusqu'a présent, j'ai toujours utilisé xmlHttpRequest en responseXML. J'ignirais qu'il y avait cette limitation avec le responseText.

Reply

Marsh Posté le 30-09-2006 à 13:41:50    

Ah, ben moi, c'est l'inverse, j'ai toujours utilisé la version responseText.
J'étudierai responseXML et les méthodes associées, lors du prochain site.. :)

Reply

Marsh Posté le 01-10-2006 à 22:18:41    

Re.
 
Bon finalement, cette histoire de XML dans Ajax, la curiosité m'y poussant, ca finit par m'interesser...
Ca a l'air en effet, plus puissant d'utiliser responseXML que responseText.
 
J'ai lu cette page:
 
http://www.ajaxtutorial.net/index. [...] sponsexml/
 
Mais deux choses m'échappent.
 
La première se trouve ici, dans le résultat renvoyé au navigateur.
 

Code :
  1. < ?xml version="1.0"?>
  2. <user>
  3.   <name>stuart</name>
  4.   <email>stuartc1@hotmail.com</email>
  5.   <random>0.98789</random>
  6. </user>


 
Question: Nul part dans le source javascript ou html, il est fait référence au noeud root user, d'ou vient-il, ce noeud? quand est-ce qu'il a été défini ?
 
Question 2: Comment je peux spécifier l'encodage de responseXML, pour la passer en ISO-8851.. puisqu'il ne s'agit pas d'une concaténation de chaînes ?
 
Cdt.

Message cité 1 fois
Message édité par paowz le 01-10-2006 à 22:25:13
Reply

Marsh Posté le 02-10-2006 à 09:41:46    

En général, quand on utilise des documents XMl, on a tendance à ne pas se préoccuper de l'élément racine.
En regardant vite fait leur code, pour accéder au noeud racine, le noeud "user" dans le cas présent, ils ont utilisé "http.responseXML.documentElement".
Personellement, pour mon site, j'avais utilisé "http.responseXML.lastChild" mais ca revient exactement au même vu qu'il ne peut y avoir qu'un seul élément racine dans un fichier XML.
 
EDIT : Pour ta seconde question, regarde la réponse d'anapajari. ;)


Message édité par omega2 le 02-10-2006 à 09:42:41
Reply

Marsh Posté le 02-10-2006 à 09:48:08    

paowz a écrit :

La première se trouve ici, dans le résultat renvoyé au navigateur.

Code :
  1. < ?xml version="1.0"?>
  2. <user>
  3.   <name>stuart</name>
  4.   <email>stuartc1@hotmail.com</email>
  5.   <random>0.98789</random>
  6. </user>


Question: Nul part dans le source javascript ou html, il est fait référence au noeud root user, d'ou vient-il, ce noeud? quand est-ce qu'il a été défini ?


C'est le rootNode du flux retourné, de manière générale ça peut être n'importe quoi. Mais c'est "généré" par le serveur et dans le tutorial que tu montres il n'y a pas le code serveur ( ou alors je l'ai pas vu mais je n'ai fait que le survoler).
 

paowz a écrit :

Question 2: Comment je peux spécifier l'encodage de responseXML, pour la passer en ISO-8851.. puisqu'il ne s'agit pas d'une concaténation de chaînes ?


Je te l'ai dit plus haut :o
http://www.w3schools.com/xml/xml_encoding.asp  
 
Cdt.[/quotemsg]

Reply

Marsh Posté le 02-10-2006 à 13:54:13    

okay, donc ne pas se préoccuper du noeud racine... ce qui veut dire qu'on peut ne pas connaitre le nom de ce noeud, ca n'a pas d'importance...
 
 

Citation :

Je te l'ai dit plus haut :o


 
Justement, c'est ca que je comprends pas.. A quel moment, tu définis le header xml ? c'est une méthode de l'objet xmlhttpRequest?
ou bien, c'est un script php dans lequel tu demandes un renvoi à la forme xml d'un contenu et c'est le fait de faire une requête AJAX en mode responseXML au lieu de responseText qui fait que le navigateur y verra un doc DOM au lieu de simple texte ?
 
Merci :)
 
 
 
 

Reply

Marsh Posté le 02-10-2006 à 13:57:45    

t'as juste à rajouter l'attribut encoding dans la première ligne [:spamafote]

Reply

Marsh Posté le 02-10-2006 à 15:14:58    

ok... donc, il s'agit bien de texte, qui renvoyé grâce responseXML, fournit du DOM parsable..
 oki :)

Reply

Marsh Posté le 02-10-2006 à 23:51:00    

Re-bonjour,
 
Dans la suite des événements, j'ai écrit un exemple dans lequel j'essaie de parser un fichier xml que je récupère depuis une procédure AJAX, mais j'obtiens une erreur du navigateur qui est:
"responseXML has no properties"
 
En gros, mon document xml renvoyé par le serveur doit être mal foutu :/
 
le voici (perso.php)
 

Code :
  1. <?
  2. $prenom=$_POST['prenom'];
  3. $nom=$_POST['nom'];
  4. $age=$_POST['age'];
  5. ?>
  6. <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
  7. <personne>
  8.   <prenom><? echo $prenom?></prenom>
  9.   <nom><? echo $nom ?></nom>
  10.   <age><? echo $age ?></age>
  11. </personne>


 
Mais je vois pas ce qui cloche... les navigateurs sont-ils si exigeants sur la syntaxe du xml ?
 
Merci bien :)

Reply

Marsh Posté le 03-10-2006 à 08:06:38    

et le type mime en le forcant en XML ?

Reply

Marsh Posté le 03-10-2006 à 09:14:26    

ben, j'ai essayé de rajouter:

Code :
  1. header("Content-type: text/xml" );


 
mais que dalle... :-/

Reply

Marsh Posté le 03-10-2006 à 09:49:34    

bin la il va nous falloir ton code javascript. A mon avis le flux xml retourné est correct mais c'est ton traitement qui merdouille

Reply

Marsh Posté le 03-10-2006 à 10:48:27    

Alors pour le code Javascript, je fais rien de bien extraordinaire...
Dans ClbFunc(), j'essaie de lui faire afficher que c'est un objet DOM.

Code :
  1. //fonction qui envoie la requête
  2. function sendRequest(file,frm) {
  3.      var rnd = Math.random();
  4.      try{
  5.        
  6.         http.open('POST', file, true);       
  7.         http.setRequestHeader('Content-Type', "text/xml" );       
  8.         http.onreadystatechange = ClbFunc;
  9.       http.send(getForm(frm)+'&rnd='+rnd);   
  10.      }
  11.      catch(e){
  12.         alert(e);
  13.       }
  14.      finally{}
  15. }
  16. // fonction pour le changement d'état
  17. function ClbFunc(){   
  18.      try{
  19.            if((http.readyState == 4)&& (http.status == 200)){
  20.          alert(http.responseXML);
  21.           }                    
  22.       }
  23.      catch(e){
  24.               alert(e);
  25.       }
  26.      finally{}
  27.      
  28. }


 
A l'heure actuelle, il m'affiche null dans le alert au lieu de m'afficher [Object XMLDocument], comme sur l'exemple 4) de cette page:
http://www.dynamicdrive.com/dynami [...] outine.htm


Message édité par paowz le 03-10-2006 à 10:50:38
Reply

Marsh Posté le 03-10-2006 à 11:07:35    

bon ... ça a l'air correct :D
fais péter ton php maintenant ( le code pas le retour)

Reply

Marsh Posté le 03-10-2006 à 11:13:53    

Avec > IE6, il faut recréer l'élément http à chaque utilisation. Ca n'a pas l'air d'être le cas ici au vu de ton code, alors rajoute le si ca n'est pas encore fait pour pas avoir de problémes plus tard. ;)
 
Sinon, pour le coup du null, je ne vois pas d'où ca vient. T'as une page de test sur internet qu'on puisse essayer de voir?

Reply

Marsh Posté le 03-10-2006 à 11:22:51    

Citation :

Avec > IE6, il faut recréer l'élément http à chaque utilisation. Ca n'a pas l'air d'être le cas ici au vu de ton code, alors rajoute le si ca n'est pas encore fait pour pas avoir de problémes plus tard. ;)


 
pardon, j'ai oublié de kopikoler cette ligne:

Code :
  1. var http = createRequestObject();


 
Note: Je suis sous Firefox.
 

Citation :

fais péter ton php maintenant ( le code pas le retour)


Ben mon code, c'est celui que j'ai cité plus haut? non? quelle partie du code? celle qui génère la réponse XML ?
 
Vous pouvez jeter un oeil à cette adresse:
http://wallofsound.free.fr/
 
Merci bien :)


Message édité par paowz le 03-10-2006 à 11:26:53
Reply

Marsh Posté le 03-10-2006 à 11:33:12    

pas sur que ça soit que ça mais en tout cas ça aide pas:

Code :
  1. <input type="button" value="go" onclick="javascript:sendRequest(&quot;perso.php&quot;,this.form)"/>

Reply

Marsh Posté le 03-10-2006 à 11:40:42    

c'est-à-dire ? :/
Pourtant l'événement onclick est bien généré, le fichier perso.php est bien "attaqué" et j'arrive bien dans ma fonction de retour avec l'apparition de alert


Message édité par paowz le 03-10-2006 à 11:43:08
Reply

Marsh Posté le 03-10-2006 à 11:46:45    

j'étais juste scéptique sur l'utilisation des &quot; dans l'adresse du fichier php !!!  

Reply

Marsh Posté le 03-10-2006 à 11:47:41    

Heu, tu te rends comptes que tu demandes à firefox de récupérer le contenu du fichier situé à l'adresse "prenom=&nom=test&age=&rnd=0.7925991527191848"?
Ca serait peut être une bonne idée de lui donner l'adresse compléte vers le fichier plustôt que de lui demander de deviner comme IE quel fichier peut être demandé.
 
PS : Récupére toi l'extention "javascript debugger" pour firefox : http://www.hacksrus.com/~ginda/venkman/ Ca aide pas mal pour comprendre ce genre de cas.

Reply

Marsh Posté le 03-10-2006 à 11:48:27    

en appelant directement
http://wallofsound.free.fr/perso.php
 
j'obtiens

Code :
  1. Parse error: syntax error, unexpected T_STRING in /mnt/121/sdc/2/2/wallofsound/perso.php on line 6

Reply

Marsh Posté le 03-10-2006 à 11:52:31    

Citation :

j'étais juste scéptique sur l'utilisation des &quot; dans l'adresse du fichier php !!!  


 
Non, à priori, ca me permet d'aligner des ' en tant que délimiteurs dans un echo qui est délimité lui aussi par des '.
 

Citation :

Heu, tu te rends comptes que tu demandes à firefox de récupérer le contenu du fichier situé à l'adresse "prenom=&nom=test&age=&rnd=0.7925991527191848"?
Ca serait peut être une bonne idée de lui donner l'adresse compléte vers le fichier plustôt que de lui demander de deviner comme IE quel fichier peut être demandé.


 
Je suis en méthode POST et non en GET et avec le 'open()', justement j'ouvre une connexion sur 'perso.php'.
Tu crois qu'il vaudrait mieux que je spécifie le chemin complet ? ca me semble étrange.. :/
 

Citation :

Récupére toi l'extention "javascript debugger" pour firefox


J'y cours :)

Message cité 1 fois
Message édité par paowz le 03-10-2006 à 11:53:14
Reply

Marsh Posté le 03-10-2006 à 11:53:08    

paowz a écrit :

en appelant directement
http://wallofsound.free.fr/perso.php
 
j'obtiens

Code :
  1. Parse error: syntax error, unexpected T_STRING in /mnt/121/sdc/2/2/wallofsound/perso.php on line 6



normal tu lui balourdes un <? pour en-tête xml comment veux-tu qu'il s'en sorte vu que c'est aussi le tag php?
fait un echo de tout ton truc plutot!

Code :
  1. header("Content-type: text/xml" );
  2. echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
  3. <personne>
  4. <prenom>'.$prenom.'</prenom>
  5. <nom>'.$nom.'</nom>
  6. <age>'.$age.'</age>
  7. </personne>' ;


Message édité par anapajari le 03-10-2006 à 11:54:23
Reply

Marsh Posté le 03-10-2006 à 11:55:02    

Heu, a la relecture du code on va dire : "oups, me suis planté".
De voir les paramettres comme ça, j'en ai oublié de regarder plus haut l'ouverture du fichier. :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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