Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XMLrequest et accents encore et encore...

17 réponses
Avatar
Jibé
Bonjour,

j'envoie les données d'un champ via un script XMLHttpRequest

ma page traite les données et renvoie la réponse dans un div
Jusque là tout va bien...
Si j'envoie "énergie" ma variable arrive sous la forme "énergie"
(A majuscule accentué , signe copyright, nergie) et ma requête SQL ne
renvoie pas de résultat of course...
J'ai pourtant un
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
dans le head du document.
SI je regard dans firebug, il envoie bien "id énergie"

Je sais que cette histoire d'accents revient souvent mais là je sèche

Merci d'avance

JiBé

7 réponses

1 2
Avatar
Pierre Goiffon
Jibé wrote:
http://habitat-developpement.tm.p15.siteinternet.com/test/


Merci, c'est parfait !

J'ai réalisé un formulaire pour envoyer une requète POST à votre page
http://habitat-developpement.tm.p15.siteinternet.com/test/x_fichier_cherche.cfm.
Voir sur :
http://pgoiffon.free.fr/_temp/POST_habitatdev.html

Ce formulaire de test est renvoyé en UTF-8. Sans rien modifier,
saisissez une valeur et lancer la requète : au retour vous obtenez des
prb pour les caractères hors us-ascii
Maintenant, reprenez ce formulaire et faites la lire par le navigateur
comme de l'ISO Latin-1 (pour ce faire, dans Firefox menu view, character
encoding, sélectionner "Western (8859-1)"). Relancez une requète : plus
de prb d'accents.

Dans le 1er cas, le paramètre a été envoyé en UTF-8, dans le 2eme en ISO
Latin-1 (cela se vérifie aisément sur Firefox avec l'extension Live HTTP
Headers : voir les entêtes envoyés dans le page info de la page de
résultat). Si les caractères us-ascii passent dans le 1er cas, c'est
parce que UTF-8 et ISO Latin-1 codent de la même façon les 127 premiers
caractères !

J'en conclu donc que le .send de l'objet XMLHttpRequest envoi les
données en UTF-8... Cela serait logique car ça va dans le sens des
préconisations largement formulées par l'IETF dans plusieurs RFC.
Cependant, en cherchant rapidement je n'ai trouvé aucune doc indiquant
le codage utilisé par l'implémentation sur Mozilla (et il y a toutes les
autres...) : je suis très preneur d'infos sur le sujet !

Bref à votre place je m'assurerai que les différentes implémentations de
XMLHttpRequest envoient bien de l'UTF-8. Si oui, alors il faut adapter
votre script pour qu'il sache traiter des chaines UTF-8 en entrée...

Avatar
ASM
Voilà qui sera peut être plus parlant pour tout le monde

http://habitat-developpement.tm.p15.siteinternet.com/test/


essayer :

function trim(str) {
return decodeURI(str).replace(/(^s*)|(s*$)/g,"")
}


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
Pierre Goiffon
ASM wrote:
http://habitat-developpement.tm.p15.siteinternet.com/test/


essayer :

function trim(str) {
return decodeURI(str).replace(/(^s*)|(s*$)/g,"")
}


?!!????
Comprend pas la réponse

decodeURI ne vas faire que transformer les "%C3%19" en "é" par exemple


Avatar
Jibé
Merci mais ça ne change rien

Voilà qui sera peut être plus parlant pour tout le monde

http://habitat-developpement.tm.p15.siteinternet.com/test/


essayer :

function trim(str) {
return decodeURI(str).replace(/(^s*)|(s*$)/g,"")
}


JiBé


Avatar
Jibé
J'en suis arrivé à la même conclusion sans trouver pour le moment.
JiBé
Bref à votre place je m'assurerai que les différentes implémentations de
XMLHttpRequest envoient bien de l'UTF-8. Si oui, alors il faut adapter
votre script pour qu'il sache traiter des chaines UTF-8 en entrée...


Avatar
ASM
ASM wrote:
http://habitat-developpement.tm.p15.siteinternet.com/test/


essayer :

function trim(str) {
return decodeURI(str).replace(/(^s*)|(s*$)/g,"")
}


?!!????
Comprend pas la réponse

decodeURI ne vas faire que transformer les "%C3%19" en "é" par exemple


n'est-ce point la réponse à la question posée ?
cracrabouillage des accentués au retour
(cite)
Si j'envoie "énergie" ma variable arrive sous la forme "énergie"
(/cite)

et comme je vois par ailleurs (*) :

xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");

j'imagine qu'il doive falloir faire un traitement qque part au niveau
de(s) encodages/décodages d'url.

si ce n'est pas dans la fonction trim()
ce sera dans coldfusion au traitement vers la BdD
'x_fichier_cherche.cfm'
dont on ne peut voir le contenu (erreur si appel direct)


(*)
http://www.yoyodesign.org/doc/w3c/xforms1/slice11.html#serialize-urlencode
(cite)
les caractères non-ASCII et ceux réservés sont échappés, en remplaçant
le caractère par ... la représentation UTF-8 du caractère, chaque octet
étant à son tour remplacé par un code %HH, où HH représente la notation
hexadécimale en capitales de la valeur d'octet et % est un caractère
littéral
(/cite)

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé



Avatar
Jibé
Je me réponds car ça peut servir à d'autre
Le contexte est en environnement CFMX 7
Il faut rajouter
<cfset setEncoding("Form", "utf-8")> dans le fichier qui effectue la
requête pour que la conversion se fasse...

JiBé

Bonjour,

j'envoie les données d'un champ via un script XMLHttpRequest

ma page traite les données et renvoie la réponse dans un div
Jusque là tout va bien...
Si j'envoie "énergie" ma variable arrive sous la forme "énergie"
(A majuscule accentué , signe copyright, nergie) et ma requête SQL ne
renvoie pas de résultat of course...
J'ai pourtant un
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
dans le head du document.
SI je regard dans firebug, il envoie bien "id énergie"

Je sais que cette histoire d'accents revient souvent mais là je sèche

Merci d'avance

JiBé


1 2