Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 .. smile

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 smile , 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