# Python 3, web, utf-8 accent

**URL:** <https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946 "2016-02-21T18:45:01Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![kripteks](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71c47a/32.png) [@kripteks](https://www.debian-fr.org/u/kripteks)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/1 "2016-02-21T18:45:01Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/2 "2016-02-21T18:45:02Z")

</div>

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)

```auto

```

Mais alors franchement, je pencherais plutôt pour un autre problème.  
Tu utilises quel éditeur de texte?

---

<div class="post-metadata">

**Author:** ![limax](https://www.debian-fr.org/user_avatar/www.debian-fr.org/limax/32/3886_2.png) [@limax](https://www.debian-fr.org/u/limax)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/3 "2016-02-21T18:45:02Z")

</div>

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](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](http://www.debian-fr.org/probleme-accent-t42081.html)

avec:

```auto

```

tu dois avoir l’encodage ANSI\_X3.4-1968 (enfin avant de rajouter locale.getpreferredencoding etc …)

---

<div class="post-metadata">

**Author:** ![kripteks](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71c47a/32.png) [@kripteks](https://www.debian-fr.org/u/kripteks)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/4 "2016-02-21T18:45:06Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/5 "2016-02-21T18:45:07Z")

</div>

> [@kripteks](#):
>
> print(«&nbsp;Vivé débiân&nbsp;».encode(‹&nbsp;utf-8&nbsp;›))  
> m’affiche (navigateur web) ceci:  
> b’Viv\xc3\xa9 d\xc3\xa9bi\xc3\xa2n’

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](http://stackoverflow.com/questions/9322410/set-encoding-in-python-3-cgi-scripts)

---

<div class="post-metadata">

**Author:** ![limax](https://www.debian-fr.org/user_avatar/www.debian-fr.org/limax/32/3886_2.png) [@limax](https://www.debian-fr.org/u/limax)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/6 "2016-02-21T18:45:09Z")

</div>

[quote=«&nbsp;thuban&nbsp;»]  
edit : solution tirée d’ici? : [stackoverflow.com/questions/9322 … gi-scripts](http://stackoverflow.com/questions/9322410/set-encoding-in-python-3-cgi-scripts)[/quote]  
oui j’avais déjà mis le lien dans mon précédent message ![:whistle:](https://www.debian-fr.org/uploads/default/original/1X/899b2c331f8cc02517f77948602974610a95f952.gif "Whistle")

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

---

<div class="post-metadata">

**Author:** ![limax](https://www.debian-fr.org/user_avatar/www.debian-fr.org/limax/32/3886_2.png) [@limax](https://www.debian-fr.org/u/limax)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/7 "2016-02-21T18:45:09Z")

</div>

si finalement j’ai bien trouvé la solution ![:041](https://www.debian-fr.org/uploads/default/original/1X/bfe857c9119752799c3eac55ca37a50312c51282.gif "applaudit")

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>
`

---

<div class="post-metadata">

**Author:** ![kripteks](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71c47a/32.png) [@kripteks](https://www.debian-fr.org/u/kripteks)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/8 "2016-02-21T18:45:09Z")

</div>

Sa fonctionne à merveille ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK") ![:038](https://www.debian-fr.org/uploads/default/original/1X/08df484251490af77ba342c0331f3ee271065fe9.gif "bravo")

---

<div class="post-metadata">

**Author:** ![limax](https://www.debian-fr.org/user_avatar/www.debian-fr.org/limax/32/3886_2.png) [@limax](https://www.debian-fr.org/u/limax)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/9 "2016-02-21T18:45:09Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 6:45 UTC](https://www.debian-fr.org/t/python-3-web-utf-8-accent/59946/10 "2016-02-21T18:45:12Z")

</div>

> [@limax](#):
>
> oui j’avais déjà mis le lien dans mon précédent message ![:whistle:](https://www.debian-fr.org/uploads/default/original/1X/899b2c331f8cc02517f77948602974610a95f952.gif "Whistle")

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