Accents, Python et Apache PHP

Salut

J’ai un petit bout de script en Python 3 qui permet de tester un serveur SMTP (envoi d’un mail de test, et affichage de message à chaque étape de la communication avec le serveur SMTP)

Le tout fonctionne très bien sur un Raspberry Pi avec Archlinux, que ce soit depuis un shell ou depuis une page php (appel du script avec la commande php passthru())

Je bascule sur Debian, tout est en place sauf ce script qui me prend la tête depuis des heures…
Il fonctionne toujours à merveille depuis le shell.
Il ne fonctionne pas si on l’appelle depuis une page php (toujours avec passthru())
Le journal d’erreur d’Apache indique clairement que le problème vient de l’encodage en ascii de mes messages qui contiennent des accents… (en fait, c’est un message d’erreur de Python, mais transmis par Apache)

Je précise que tout est configuré pour utf-8 (locale, php (j’ai ajouté un Default_charset dans le fichier conf), page html produite par php, encodage de mes fichiers sources)

En cherchant un peu on trouve (y compris sur ce forum) des messages indiquant qu’il faut ajouter .encode(“utf-8”) à mes chaines de caractères python.
J’ai essayé mais ça ne donne rien de probant : certes l’erreur n’apparait plus, mais mes messages sont affichés n’importe comment (\xe08 par exemple à la place des accents)

Donc : pourquoi sous Debian j’ai ce problème d’accent alors que je ne l’ai pas sous Archlinux, et comment le résoudre …

PS : j’ai même installé python 3.2.3 pour voir si ça changeait quelque chose…
PS2 : Pourquoi Python3, qui normalement est par défaut en UTF-8 se met à ne plus comprendre l’utf-8 si on le lance depuis Apache ?

Merci à tous.

bonjour

as tu mis dans ta conf AddDefaultCharset UTF-8 SetEnv PYTHONIOENCODING utf8

Essaye aussi en remplaçant par SetEnv PYTHONIOENCODING utf-8
Je ne sais pas s’il faut mette utf-8 ou utf8 (c’est peut être pareil)

Ton fichier python est il bien écrit en utf8?
As tu essayé directement ton script python pour voir le code obtenu?

Essaye un ecm pour voir si ca vient d’apache ou de ton script.

edit: essaye aussi de tester pyinfo.py avec

#!/usr/bin/python3
# -*- coding: utf8 -*-
import cgi

cgi.test()

Tu auras peut être des informations.

Hello

J4ai bien mis les paramètres que tu indiques, sans changement.
Mais j’ai eu la réponse : il faut modifier /etc/apache2/envvars et décommenter cette ligne :

Uncomment the following line to use the system default locale instead:

. /etc/default/locale

Ainsi Apache récupère les variables d’environnements du système et ne fait plus band à part à ce niveau là !