#1 Le 08/12/2007, à 18:54
- cedricbmx
apache: passage des variables dans l'URL et encodage
Bonjour
J'ai un formulaire qui renvoie des variables dont les valeurs contiennent des caractères accentués
Si mes scripts CGI, data et html sont encodés en iso-8859, le é donne %E9
Si tout est encodé en UTF-8 le é donne %C3%A8 !!!
Est-ce que c'est possible de paramétrer la chose (que le é donne toujours %E9 quelque soit l'encodage)?
http://normandiebmx.winnerforum.net/
http://lavenirdubmx.exprimetoi.net/
http://bmxfrance.free.fr/cedr/bicross/
Hors ligne
#2 Le 08/12/2007, à 19:12
- stopher
Re : apache: passage des variables dans l'URL et encodage
Salut ,
Perso , j'utilises la fonction urlencode .. mais je ne suis pas sure d'avoir bien compris ta question ..
Hors ligne
#3 Le 08/12/2007, à 23:27
- cedricbmx
Re : apache: passage des variables dans l'URL et encodage
Lien très intéressant. Merci
En fait il m'aurai fallu urldécode , mais je n'utilise pas php mais des .cgi en shell script
ça semble mieux marcher lorsque je crée la page avec
echo -e "Content-type: text/html; charset=utf-8"
echo
echo -e '<!doctype html public "-//w3c//dtd html 4.0 transitional//en">'
echo -e '<html>'
echo -e '<head>'
echo -e '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'
echo -e '</head>'
echo -e '<body>'
au lieu de (sans la balise méta)
echo -e "Content-type: text/html; charset=utf-8"
echo
echo -e '<!doctype html public "-//w3c//dtd html 4.0 transitional//en">'
echo -e '<html>'
echo -e '<body>'
je pense que sans la balise meta, l'un des deux (entre le navigateur et apache) doit prendre une valeur par défaut autre que UTF-8
http://normandiebmx.winnerforum.net/
http://lavenirdubmx.exprimetoi.net/
http://bmxfrance.free.fr/cedr/bicross/
Hors ligne
#4 Le 09/12/2007, à 12:30
- aleph
Re : apache: passage des variables dans l'URL et encodage
Je ne connais rien en PHP et cgi, mais le problème étant fréquent...
Mini cours.
Le travail avec les encodages (codages en français) s'effectue toujours de la même manière, quelles que soient les sources et les sorties (clavier, fichier, base de données, affichage).
source ------> [moteur] --------> sortie
Le développeur doit obligatoirement connaà®tre les encodages d'entrée (source) et de sortie.
Il revient au développeur d'adapter son moteur en conséquence.
Illustration à l'aide d'une console Python
>>> #moteur, transforme un string en unicode
>>> def moteur(source):
u = unicode(source, 'iso-8859-1', 'replace')
return u
>>> source = 'éléphant' #encodé en iso-8859-1 parce que je le sais
>>> source
'\xe9l\xe9phant'
>>> print source
éléphant
>>> tmp = moteur(source)
>>> isinstance(tmp, unicode)
True
>>> #affichage conforme au dispositif de sortie
>>> #iso-8859-1 parce ce que je le sais
>>> tmp.encode('iso-8859-1')
'\xe9l\xe9phant'
>>> print tmp.encode('iso-8859-1')
éléphant
>>> #si utf-8, ce qui n'est pas le cas ici
>>> tmp.encode('utf-8')
'\xc3\xa9l\xc3\xa9phant'
>>> print tmp.encode('utf-8')
àƒÂ©làƒÂ©phant
>>> #si utf-16, ce qui n'est pas le cas ici
>>> tmp.encode('utf-16')
'\xff\xfe\xe9\x00l\x00\xe9\x00p\x00h\x00a\x00n\x00t\x00'
>>> print tmp.encode('utf-16')
à¿à¾é
>>> #si DOS (anglais, us)
>>> tmp.encode('cp437')
'\x82l\x82phant'
>>> print tmp.encode('cp437')
‚l‚phant
#5 Le 08/03/2008, à 10:36
- cedricbmx
Re : apache: passage des variables dans l'URL et encodage
A propos d'encodage, il y a un problème avec les accents dans ce sujet (qu'il n'y à pas dans les autres sujet) . Bizzare...
http://normandiebmx.winnerforum.net/
http://lavenirdubmx.exprimetoi.net/
http://bmxfrance.free.fr/cedr/bicross/
Hors ligne