OVH Cloud OVH Cloud

[XMLHTTPRequest] Accents

13 réponses
Avatar
Jerome
Bonjour

J'utilise la méthode donnée sur
http://siddh.developpez.com/articles/ajax/ pour faire des listes
déroulantes liées.
Cela fonctionne bien mais j'ai un problème inattendu : les accents !
En effets si il y a des caractères accentués dans les champs varchar de
mysql, ils sont remplacés par une virgule dans le retour responseText.

Une idée ?

--
Jerome
+----------------------------------------------------+
Linux user #347847 registered on http://counter.li.org
+----------http://www.mandrivalinux.com -------------+

10 réponses

1 2
Avatar
Bertrand B
Bonjour

J'utilise la méthode donnée sur
http://siddh.developpez.com/articles/ajax/ pour faire des listes
déroulantes liées.
Cela fonctionne bien mais j'ai un problème inattendu : les accents !
En effets si il y a des caractères accentués dans les champs varcha r de
mysql, ils sont remplacés par une virgule dans le retour responseText .

Une idée ?



Une question quel est l'encodage des données dans le varchar ? et quel
est l'encodage dans la page ?
il faut aussi examiner les headers ce peut être un problème de mime t ype
(méthode getAllResponseHeaders de l'objet xmlHttpRequest)

Des liens utiles pour ceux qui chatouillent le XMLHTTPRequest
http://www.toutjavascript.com/savoir/xmlhttprequest.php3
http://www.xml.com/cs/user/view/cs_msg/2815

et une utilisation abusive et délirante sur mon chtioblogue (lien dans
la signature). Un exemple où l'on voit que l'on peut se passer de php : )

pour Etendre le champs des possibles
http://www.crockford.com/JSON/ la définition de json
et
http://perso.wanadoo.fr/bertrand.belguise/blog/chtringify.js
une variante (utilisée dans chtioblogue) la fonction myimport pouvant
dans certains cas remplacer XMLHTTPRequest (avec quelques petits avantage s)


--
Un blog sur les pages persos de wanadoo ?
chtioblogue : http://perso.wanadoo.fr/bertrand.belguise/blog/blog.html
(Totalement client-side sans php ni base de donnée)

Avatar
Jerome
On Sun, 29 Jan 2006 21:39:44 +0100, Bertrand B wrote:

Bonjour

J'utilise la méthode donnée sur
http://siddh.developpez.com/articles/ajax/ pour faire des listes
déroulantes liées.
Cela fonctionne bien mais j'ai un problème inattendu : les accents !
En effets si il y a des caractères accentués dans les champs varchar de
mysql, ils sont remplacés par une virgule dans le retour responseText.

Une idée ?



Une question quel est l'encodage des données dans le varchar ?
utf8_unicode_ci


et quel est l'encodage dans la page ?
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


il faut aussi examiner les headers ce peut être un problème de mime type
(méthode getAllResponseHeaders de l'objet xmlHttpRequest)
Date: Sun, 29 Jan 2006 20:55:16 GMT

Server: Apache/2.0.54 (Mandriva Linux/PREFORK-13mdk)
X-Powered-By: PHP/5.0.4
Content-Length: 181
Keep-Alive: timeout, max“
Connection: Keep-Alive
Content-Type: text/html


Des liens utiles pour ceux qui chatouillent le XMLHTTPRequest
http://www.toutjavascript.com/savoir/xmlhttprequest.php3
http://www.xml.com/cs/user/view/cs_msg/2815

et une utilisation abusive et délirante sur mon chtioblogue (lien dans
la signature). Un exemple où l'on voit que l'on peut se passer de php
:)

pour Etendre le champs des possibles
http://www.crockford.com/JSON/ la définition de json et
http://perso.wanadoo.fr/bertrand.belguise/blog/chtringify.js une
variante (utilisée dans chtioblogue) la fonction myimport pouvant dans
certains cas remplacer XMLHTTPRequest (avec quelques petits avantages)


Merci déjà pour cette réponse rapide.

--
Jerome
+----------------------------------------------------+
Linux user #347847 registered on http://counter.li.org
+----------http://www.mandrivalinux.com -------------+


Avatar
Jerome
On Sun, 29 Jan 2006 21:39:44 +0100, Bertrand B wrote:

Bonjour

J'utilise la méthode donnée sur
http://siddh.developpez.com/articles/ajax/ pour faire des listes
déroulantes liées.
Cela fonctionne bien mais j'ai un problème inattendu : les accents !
En effets si il y a des caractères accentués dans les champs varchar de
mysql, ils sont remplacés par une virgule dans le retour responseText.

Une idée ?



Une question quel est l'encodage des données dans le varchar ? et quel
est l'encodage dans la page ?
il faut aussi examiner les headers ce peut être un problème de mime type
(méthode getAllResponseHeaders de l'objet xmlHttpRequest)

Des liens utiles pour ceux qui chatouillent le XMLHTTPRequest
http://www.toutjavascript.com/savoir/xmlhttprequest.php3
http://www.xml.com/cs/user/view/cs_msg/2815

et une utilisation abusive et délirante sur mon chtioblogue (lien dans
la signature). Un exemple où l'on voit que l'on peut se passer de php :)

pour Etendre le champs des possibles
http://www.crockford.com/JSON/ la définition de json
et
http://perso.wanadoo.fr/bertrand.belguise/blog/chtringify.js
une variante (utilisée dans chtioblogue) la fonction myimport pouvant
dans certains cas remplacer XMLHTTPRequest (avec quelques petits avantages)


En fouillant un peu plus les forums grâce à Google, j'ai trouvé la
solution.
Dans le fichier php appelé pour effectuer le requête de recherche dans
la base, j'ai ajouté :
header('Content-type: text/html; charset=iso-8859-1');

Et ça marche !
Putain d'encodages...

--
Jerome
+----------------------------------------------------+
Linux user #347847 registered on http://counter.li.org
+----------http://www.mandrivalinux.com -------------+


Avatar
Bertrand B
On Sun, 29 Jan 2006 21:39:44 +0100, Bertrand B wrote:

Bonjour

J'utilise la méthode donnée sur
http://siddh.developpez.com/articles/ajax/ pour faire des listes
déroulantes liées.
Cela fonctionne bien mais j'ai un problème inattendu : les accents !
En effets si il y a des caractères accentués dans les champs varc har de
mysql, ils sont remplacés par une virgule dans le retour responseTe xt.

Une idée ?

Une question quel est l'encodage des données dans le varchar ? et qu el

est l'encodage dans la page ?
il faut aussi examiner les headers ce peut être un problème de mim e type
(méthode getAllResponseHeaders de l'objet xmlHttpRequest)

Des liens utiles pour ceux qui chatouillent le XMLHTTPRequest
http://www.toutjavascript.com/savoir/xmlhttprequest.php3
http://www.xml.com/cs/user/view/cs_msg/2815

et une utilisation abusive et délirante sur mon chtioblogue (lien da ns
la signature). Un exemple où l'on voit que l'on peut se passer de ph p :)

pour Etendre le champs des possibles
http://www.crockford.com/JSON/ la définition de json
et
http://perso.wanadoo.fr/bertrand.belguise/blog/chtringify.js
une variante (utilisée dans chtioblogue) la fonction myimport pouvan t
dans certains cas remplacer XMLHTTPRequest (avec quelques petits avant ages)


En fouillant un peu plus les forums grâce à Google, j'ai trouvé l a
solution.
Dans le fichier php appelé pour effectuer le requête de recherche d ans
la base, j'ai ajouté :
header('Content-type: text/html; charset=iso-8859-1');

Et ça marche !
Putain d'encodages...

Comme quoi la réponse rapide ... contenait la clé %)


--
Naître ou ne pas naître, that is the conception.
-+- Pierre Dac -+-



Avatar
Eric
Perso, j'utilise ça, ça marche bien, même en cas d'erreur dans les
entêtes d'encodage :

$javascriptspecialchars = array(
'é' => 'u00E9',
'è' => 'u00E8',
'ê' => 'u00EA',
'ë' => 'u00EB',
'à' => 'u00E0',
'"' => 'u0022',
'''=> 'u0027',
''=> 'u005C'
);

echo "alert("Mon texte :
".strtr($montexte,$javascriptspecialchars).".");n";
Avatar
Patrick Mevzek
et quel est l'encodage dans la page ?
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">



L'encodage ne se spécifie pas dans les balises META.

il faut aussi examiner les headers ce peut être un problème de mime type
(méthode getAllResponseHeaders de l'objet xmlHttpRequest)
Date: Sun, 29 Jan 2006 20:55:16 GMT

Server: Apache/2.0.54 (Mandriva Linux/PREFORK-13mdk)
X-Powered-By: PHP/5.0.4
Content-Length: 181
Keep-Alive: timeout, max“
Connection: Keep-Alive
Content-Type: text/html


Pas d'encodage donc, puisque rien dans Content-Type.

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>


Avatar
Bertrand B
Perso, j'utilise ça, ça marche bien, même en cas d'erreur dans le s
entêtes d'encodage :

$javascriptspecialchars = array(
'é' => 'u00E9',
'è' => 'u00E8',
'ê' => 'u00EA',
'ë' => 'u00EB',
'à' => 'u00E0',
'"' => 'u0022',
'''=> 'u0027',
''=> 'u005C'
);

echo "alert("Mon texte :
".strtr($montexte,$javascriptspecialchars).".");n";

et pourquoi pas :

$javascriptspecialchars = array(
'é' => '&eacute;',
'è' => '&egrave;',

etc ...
qui aurait l'avantage de fonctionner quelque soit le code des caractère s.

--
Quand je pense que ma présence ici-bas n'est due qu'a deux personnes
qui se sont envoyées en l'air, je deviens philosophe.
-+- Sim -+-

Avatar
ASM

Perso, j'utilise ça, ça marche bien, même en cas d'erreur dans les
entêtes d'encodage :

$javascriptspecialchars = array(
'é' => 'u00E9',
'è' => 'u00E8',
'ê' => 'u00EA',
'ë' => 'u00EB',
'à' => 'u00E0',
'"' => 'u0022',
'''=> 'u0027',
''=> 'u005C'
);

echo "alert("Mon texte :
".strtr($montexte,$javascriptspecialchars).".");n";

et pourquoi pas :

$javascriptspecialchars = array(
'é' => '&eacute;',
'è' => '&egrave;',

etc ...
qui aurait l'avantage de fonctionner quelque soit le code des caractères.


on est train de parler de javascript ce me semble ?
(bien qu'en passant par le php pour l'écrire)

tu as essayé voir un :
alert('b&eacute;b&eacute;');
en javascript ?

alors que :
alert('bxe9bxe9');
fonctionne, par exemple.

et sans doute quelque soit le charset de l'header (ou du meta)
de la page principale.
(à voir pour celui du fichier inséré via XMLHttpRequest ...)




--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Bertrand B

Perso, j'utilise ça, ça marche bien, même en cas d'erreur dans les
entêtes d'encodage :

$javascriptspecialchars = array(
'é' => 'u00E9',
'è' => 'u00E8',
'ê' => 'u00EA',
'ë' => 'u00EB',
'à' => 'u00E0',
'"' => 'u0022',
'''=> 'u0027',
''=> 'u005C'
);

echo "alert("Mon texte :
".strtr($montexte,$javascriptspecialchars).".");n";

et pourquoi pas :

$javascriptspecialchars = array(
'é' => '&eacute;',
'è' => '&egrave;',

etc ...
qui aurait l'avantage de fonctionner quelque soit le code des caractè res.


on est train de parler de javascript ce me semble ?
(bien qu'en passant par le php pour l'écrire)

tu as essayé voir un :
alert('b&eacute;b&eacute;');
en javascript ?



de juste mais ce n'était pas pour mettre dans un alert mais bien du htm l
(puisque dans un menu)

jerome avait débuté le fil avec :
Bonjour

J'utilise la méthode donnée sur
http://siddh.developpez.com/articles/ajax/ pour faire des listes
déroulantes liées.


donc 1 partout

Plus sérieusement en choisissant l'unicode tu es tributairesdes jeux de
caractères disponibles sur la machine de la personne qui se connecte et
ce n'est pas sur qu'un corréen sur un os étrange ait les bons jeux. A vec
les entités html tu n'as pas ce problème.

Maintenant de là à dire qu'il ne faut pas utiliser l'unicode mais les
entités il y a un pas que je ne ferai pas.



Avatar
Olivier Miakinen

alert('bxe9bxe9');
fonctionne, par exemple.

et sans doute quelque soit le charset de l'header (ou du meta)
de la page principale.


Oui, c'est heureusement parfaitement indépendant de la table de
caractères déclarée pour la page HTML.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

1 2