Python 3, web, utf-8 accent

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).

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?

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 ?

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

[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 :whistle:

edit:je croyais avoir trouvé mais non ce n’est pas bon

si finalement j’ai bien trouvé la solution :041

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 :023 :038

c’est ce site qui m’a aidé http://crustulus.de/cgi-bin/blogstatic.cgi?en=EncodingsatCGIUsingPython3englisch

Dans le genre boulet moi ces jours-ci… Vivement les vacances :slightly_smiling: