Salut à tous.
J’essayes python3 pour le web, mais j’ai un soucis avec les accents.
Voici mon code:
[code]#!/usr/bin/python3.2
#- - coding: utf-8 - -
import cgi
print(“Content-Type: text/html;charset=utf-8”)
print("")
print("")
print("")
print("<meta http-equiv=“content-type” content=“text/html;charset=utf-8” />")
print(“Merci d’avance pour votre aide”)
print("")
print("")
print(“Vivé débiân”)
print("")
print("")[/code]
Si j’utilises: #!/usr/bin/python3.2 Vivé débiân s’affiche pas.
Si j’utilises: #!/usr/bin/python2.7 Vivé débiân s’affiche.
[quote]i apache2
i A python2.7
i A python2.7-minimal
i A python3
i A python3-minimal
i A python3.2
i A python3.2-minimal
i libapache2-mod-wsgi-py3[/quote]
Je m’y connais presque rien en python (à part quelque base de tout langage).
thuban
Février 21, 2016, 6:45
2
Quand tu dis “s’affiche”, c’est dans un navigateur web ou dans la console?
Ton code me semble bon pour le peu que j’en sache. Essaie en précisant l’encodage utf-8 à la ligne sensible. (avec encode)
Mais alors franchement, je pencherais plutôt pour un autre problème.
Tu utilises quel éditeur de texte?
limax
Février 21, 2016, 6:45
3
bonjour
essaye en rajoutant
import locale # module pour gérer les locales (latin1, utf8 etc...)
import sys # module pour gérer le système
locale.getpreferredencoding = lambda: 'UTF-8'
sys.stdin = open('/dev/stdin', 'r')
sys.stdout = open('/dev/stdout', 'w')
sys.stderr = open('/dev/stderr', 'w')
edit: reférence http://stackoverflow.com/questions/9322410/set-encoding-in-python-3-cgi-scripts
edit2: je viens de retester, ceci ne fonctionne plus avec python3.3 seulement avec python3.[0-2]
j’avais déjà eu ce problème http://www.debian-fr.org/probleme-accent-t42081.html
avec:
tu dois avoir l’encodage ANSI_X3.4-1968 (enfin avant de rajouter locale.getpreferredencoding etc …)
C’était afficher dans le navigateur.
J’utilises geany.
print(“Vivé débiân”.encode(‘utf-8’))
m’affiche (navigateur web) ceci:
b’Viv\xc3\xa9 d\xc3\xa9bi\xc3\xa2n’
Si au lieu de sa je rajoutes:
import locale
import sys
locale.getpreferredencoding = lambda: ‘UTF-8’
sys.stdin = open(’/dev/stdin’, ‘r’)
sys.stdout = open(’/dev/stdout’, ‘w’)
sys.stderr = open(’/dev/stderr’, ‘w’)
Sa m’affiche bien: Vivé débiân
Ne connaissant pas python, est-ce une bonne méthode ?
thuban
Février 21, 2016, 6:45
5
Ouais normal, c’est moi qui raconte des c***. Pas fait de python depuis trop de temps.
La méthode de limax a plus de sens.
Je suppose que tu as des informations à ce sujet avec le module cgi
edit : solution tirée d’ici? : stackoverflow.com/questions/9322 … gi-scripts
limax
Février 21, 2016, 6:45
6
[quote=« thuban »]
edit : solution tirée d’ici? : stackoverflow.com/questions/9322 … gi-scripts [/quote]
oui j’avais déjà mis le lien dans mon précédent message
edit:je croyais avoir trouvé mais non ce n’est pas bon
limax
Février 21, 2016, 6:45
7
si finalement j’ai bien trouvé la solution
rajoutez dans la conf d’apache
AddDefaultCharset UTF-8
SetEnv PYTHONIOENCODING utf8
pour être plus précis j’ai
Alias /python /home/limax/apache/python
<Directory /home/limax/apache/python>
AddDefaultCharset UTF-8
SetEnv PYTHONIOENCODING utf8
Options Indexes FollowSymLinks MultiViews ExecCGI
DirectoryIndex index.py
AddHandler cgi-script .cgi .py .py3 .wsgi
AllowOverride None
#Order allow,deny
#allow from all
Require all granted
</Directory>
Sa fonctionne à merveille
limax
Février 21, 2016, 6:45
9
thuban
Février 21, 2016, 6:45
10
Dans le genre boulet moi ces jours-ci… Vivement les vacances