probleme charset avec XMLHTTPREQUEST


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

probleme charset avec XMLHTTPREQUEST

Message le Ven Nov 17, 2006 9:38

Bonjour,

les XMLHTTPREQUEST sont censées me semble t'il renvoyer les réponses en utf8.

Cependant en les utilisant, j'ai des problèmes d'encodage de caractères, ma page qui recois les données issus du XMLHTTPREQUEST est bien en utf8, mais l'affichage de ces données est incorrecte (accent affichés en '?')

si je fais utf8_encode() de mon résultat, cela fonctionne, mais je n'ai aps envie de les coller partout. comment faire pour régler ce problème ?

précisions :
c'est la fonction echo qui affiche pas en utf8 si elle est dans la réponse
si mes données sont dans du xml, ca passe bien

imaginons j'appele en XMLHTTPREQUEST une page toto.php
si dans toto.php j'ai : <? echo 'vélo'; ?>
le 'é' sort en '?'
si dans mon toto.php j'ai : <DATA>vélo</DATA>
le é sort bien


merki


Serious
WRInaute passionné
WRInaute passionné
 
Messages: 2438
Inscription: 21 Nov 2005

Re: probleme charset avec XMLHTTPREQUEST

Message le Ven Nov 17, 2006 10:13

e-kiwi a écrit:les XMLHTTPREQUEST sont censées me semble t'il renvoyer les réponses en utf8.

Non, il te renvoie simplement les donnees demandees. Si celles-ci sont en utf8, tant mieux mais ce n'est pas necessairement le cas.
e-kiwi a écrit:si je fais utf8_encode() de mon résultat, cela fonctionne

Donc tes donnees sont probablement en iso-8859-1 (configuration par defaut d'apache).
Donc soit tu passes par du XML en indiquant l'encodage, soit tu convertis tes donnees sur le serveur, soit tu les convertis a l'arrivee.

oxman
WRInaute discret
WRInaute discret
 
Messages: 118
Inscription: 21 Juin 2004

Message le Ven Nov 17, 2006 10:23

Le plus simple et propre reste de mettre en entête de chaque fichier :
<?php header("Content-Type: text/html; charset=utf-8");?>

Pour "modifier" la valeur donnée par Apache.


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Ven Nov 17, 2006 10:28

<?php header("Content-Type: text/html; charset=utf-8");?> ne change rien :(

j'ai essayé les 2 en iso et les 2 en utf8


blman
WRInaute accro
WRInaute accro
 
Messages: 3077
Inscription: 5 Sep 2003

Message le Ven Nov 17, 2006 10:50

E-kiwi, le XMLHTTPREQUEST te renvoie des données d'une BDD j'imagine ? La BDD est-elle bien en UTF ?


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Ven Nov 17, 2006 11:25

non effectivement elle n'y est pas, mais meme sur des echos de texte simple, ca marche pas non plus :
echo 'vélo' ne fonctionne pas


blman
WRInaute accro
WRInaute accro
 
Messages: 3077
Inscription: 5 Sep 2003

Message le Ven Nov 17, 2006 11:28

C'est quoi ton éditeur de code ? Il te génère bien du code en UTF ?

Si tu ouvre ton fichier PHP avec notepad++ par exemple, et que tu le configure en UTF-8 (notepad++ : format > encoder en UTF8), est-ce que ça marque vélo ou v?lo ?

darkbob
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 32
Inscription: 29 Nov 2004

Re: probleme charset avec XMLHTTPREQUEST

Message le Ven Nov 17, 2006 11:41

e-kiwi a écrit:imaginons j'appele en XMLHTTPREQUEST une page toto.php
si dans toto.php j'ai : <? echo 'vélo'; ?>
le 'é' sort en '?'
si dans mon toto.php j'ai : <DATA>vélo</DATA>
le é sort bien
merki


Essaye d'ajouter htmlentities avant l'affichage.


blman
WRInaute accro
WRInaute accro
 
Messages: 3077
Inscription: 5 Sep 2003

Message le Ven Nov 17, 2006 11:53

htmlentities ou htmlspecialchars, c un pansement( mais qui fonctionne aussi).

Mais ça devrait marcher si le code que tu retourne e-kiwi est bien en UTF-8 donc :
- pour ton fichier PHP : il faut qu'il soit coder en UTF8 avec notepad++ (configurer en UTF8) par exemple ou que tu retourne du texte encodé en UTF-8 avec utf8_encode()
- pour ta BDD : qu'elle soit en UTF8 ou que tu encode les données avec utf8_encode()

ATTENTION : avec utf8_encode(), certains caractères ne passent pas. Je crois qu'il faut faire le test avec le signe euro (de mémoire). Sinon, avec cette fonction, il faut bien faire attention de transformer du latin en utf. Si tu essaie de transformer de l'utf en utf, ça va merder.


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Ven Nov 17, 2006 11:54

htmlentities ne change rien

blman> quel fichier php à ouvrir en utf-8 ?


blman
WRInaute accro
WRInaute accro
 
Messages: 3077
Inscription: 5 Sep 2003

Message le Ven Nov 17, 2006 11:58

Tu code dans quel éditeur e-kiwi ?


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Ven Nov 17, 2006 11:59

Programmer Notepad


blman
WRInaute accro
WRInaute accro
 
Messages: 3077
Inscription: 5 Sep 2003

Message le Ven Nov 17, 2006 12:01

Notepad sur un windows FR, j'imagine. Donc c normal, tes caractères sont en latin. Il faut que tu code en UTF8 avec un éditeur qui permet de faire ça.

oxman
WRInaute discret
WRInaute discret
 
Messages: 118
Inscription: 21 Juin 2004

Message le Ven Nov 17, 2006 12:40

Pour la petite info, Notepad de Windows XP permet d'encoder en UTF-8.

Mais je ne saurais que trop vous conseiller Scintilla Editor.
Libre et gratuit : http://prdownloads.sourceforge.net/scin ... p?download


tangui
WRInaute impliqué
WRInaute impliqué
 
Messages: 863
Inscription: 10 Fév 2005

Message le Ven Nov 17, 2006 14:29

[mode ContinueTheTroll="on"]
PSPad :mrgreen:
J'ai testé Notepad++ et PSPad, et il n'y a pas photo... PSPad a bcp plus d'options interessantes ;)
[mode ContinueTheTroll="off"]

probleme charset avec XMLHTTPREQUEST

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité