JeuWeb - Crée ton jeu par navigateur
[réglé] xajax : afficher les caractères utf8 - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [réglé] xajax : afficher les caractères utf8 (/showthread.php?tid=589)



[réglé] xajax : afficher les caractères utf8 - Raoull - 02-01-2007




RE: xajax : afficher les caractères utf8 - Roworll - 02-01-2007

Toujours un bonheur de farfouiller les encodages...

Deux choses à tenter :

- Essayes de modifier le CharSet en le mettant à UTF-8.
- Utilises les fonctions de PHP utf8_encode/utf8_decode lors du renvoi des informations.


RE: xajax : afficher les caractères utf8 - gtsoul - 02-01-2007

est-ce que ta base est en utf-8 ?
est-ce que tu es sous windows (iso et non unicode par défaut) ?


RE: xajax : afficher les caractères utf8 - Raoull - 02-01-2007

Pour ma page, le doctype xml et le Content-Type sont corrects, et respectivement en FR et "charset=ISO-8859-1".

@Roworll
- Essayes de modifier le CharSet en le mettant à UTF-8 :
le charset de quoi ? le content-type de ma page ? J'ai pas testé... vais voir ca.

- Utilises les fonctions de PHP utf8_encode/utf8_decode lors du renvoi des informations :
J'ai bien essayé, mais je me suis vite rendu compte que le probleme viens exclusivement de xajax. Avant l'envoie de "$reponse->getXML();" les texte est parfait, apres "return $reponse->getXML();" le texte est en utf8...

J'ai donc tenté de dire à xajax "$reponse->setCharEncoding("iso-8859-1");" ca n'a rien changé, ou alors je m'y prends mal...

@gtsoul
- est-ce que ta base est en utf-8 ?
non elle est correcte, le probleme ne se produit que pour cette page. Comme je l'ai expliqué plus haut, c'est xajax qui rebalance en utf8 les textes que je lui donne.

- est-ce que tu es sous windows (iso et non unicode par défaut) ?
mmm j'ai peur de ne pas comprendre ta question... Oui moi je suis sous windows mais les serveurs non car je teste mon code en ligne, chez free. (je teste pas en local ces temps ci).
Et je ne sais pas si mon windows est en unicode ou quoi... Il est NORMAL Wink

Le problème ne vient pas de la je pense, mais bien de xajax !
Il faudrait que qlqu'un habitué a xajax me dépanne.


RE: xajax : afficher les caractères utf8 - gtsoul - 02-01-2007

unicode = utf-8
l'iso ne gère pas tous les accents sauf un iso (occidental)

l'os influe fortement sur l'encodage de ton serveur d'application (j'ai eu un problème avec tomcat sur un portage windows/linux), free ont des serveurs unix donc unicode par défaut, windows est iso; donc pas de problème de ce coté.

Damned j'ai aussi ce problème !!!

Je peux pas tester en ce moment mais essaye un truc.
ouvre xajax/xajaxresponse.inc.php

[b]l.80 var $sEncoding;[b]

regarde ce qu'elle retourne et essaye des valeurs
code associé à getxml() :
Code PHP :
<?php 
function getXML()
{
$sXML = "<?xml version=\"1.0\"";
if (
$this->sEncoding && strlen(trim($this->sEncoding)) > 0)
$sXML .= " encoding=\"".$this->sEncoding."\"";
$sXML .= " ?"."><xjx>" . $this->xml . "</xjx>";

return
$sXML;
}
on voit que l'attribut sEncoding joue un rôle dans l'encodage du xml (encoding= ... )


Tiens raoull, pendant que je te tiens,
j'ai une fonction xajax mouvement($direction) qui me sert pour les déplacements sur la carte. D'habitude j'appelle toute mes fonctions xajax via des boutons, mais là j'ai envie d'utiliser un lien.
la syntaxe qui marche :
Code PHP :
<?php 
<form method="post" action="map.php5">
<
input type="submit" value="plop" onclick="xajax_mouvement('gauche'); return false;"/>
</
form>

et je voudrais la transposer sur un balise <a></a>
Code PHP :
<?php 
<a href="javascript:xajax_mouvement(\'gauche\'); return false;"></a>
Mais ca fonctionne pas des masses

[résolu]
en fait c'est ca :
Code PHP :
<?php 
<a href="javascript:return false;" onclick="xajax_mouvement('gauche');">plop</a>



RE: xajax : afficher les caractères utf8 - Raoull - 02-01-2007

Ok, je vais prendre le temps ce soir de voir tout ca.

Mais de tête, sEncoding vaut par dégaut "utf8" puisque qu'elle prends la valeur de la constante "XAJAX_DEFAULT_CHAR_ENCODING" qui est défini dans "xajax.inc.php" (l.50) à "utf8".

C'est pour ca que j'ai testé très vite la fonction "$reponse->setCharEncoding("iso-8859-1");" mais ca n'a rien changé...

Il faut que j'essaie de mettre directement la constante de xajax à "iso-8859-1" pour voir...
Sinon que j'essaie de mettre le charest de ma page à utf8, mais j'y crois pas trop... enfin je sais pas.

------- EDIT

j'avais pas vu ton probleme, et en effet il vaut mieux mettre je JS dans le onclick, et tu peux aussi faire :
Code PHP :
<?php 
<a href="javascript:void(0);" onclick="xajax_mouvement('gauche'); return false;">plop</a>
mais ca revient au meme Wink


RE: xajax : afficher les caractères utf8 - Raoull - 02-01-2007




RE: xajax : afficher les caractères utf8 - Raoull - 02-01-2007

Ca y est j'ai trouvé la solution, enfin, il faut mettre
Code PHP :
<?php 
define
('XAJAX_DEFAULT_CHAR_ENCODING', 'iso-8859-1' );
dans xajax.inc.php

et juste avant d'envoyer le texte dans la base de données, lors de l'enregistrement, faire un utf8_decode du texte !!