Bonjour,
J'ai lu les tutos sur l'encodage mais mon problème reste inchangé.
J'ai un script python qui insère du texte dans ma bdd, puis je lis ce texte sur ma page php.

Mais j'ai des pb d'accent classique style sur ma page web é.
Ma page commence bien par :
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Son encodage interne est bien utf-8 aussi

j'ai bien rajouter les requetes
mysql_query("SET NAMES 'utf8'");
ou
mysql_set_charset('utf8');

avant l'appel mysql, mais rien n'y fait.

Par contre j'ai remarqué que si je remplacais :
<p>$result->test</p>
par :
<p>".utf8_decode($result->test)."</p>

ca marche. ca me fait disparaitre les é
Alors je comprend pas pourquoi je devrais decoder l'utf-8 pour avoir une page qui s'affiche correctement.

Je dois rester en utf-8 mais je me vois mal faire des utf8_decode() a chaque fois

Merci
Bonsoir,

Je ne suis pas un expert mais je te conseil de vérifier:
1) le format d'encodage de tes fichiers (utf-8)
2) le format de ta base de données (personnellement j'utilise utf-8 general)

Normalement (si je ne dis pas de bêtises...) tu n'as pas besoin de faire un "SET NAMES UTF-8" si le charset est bien spécifié, et que la bdd et tes fichiers sont encodés correctement, en tout cas si les champs sont renseignés également en utf-8.
Bon, en gros il faut être en UTF-8 sur toute la chaine et ne pas chercher à convertir les données (ou laisser MySQL les convertir à la volée).

Il faut donc:
- Avoir des données en base qui sont bien en UTF-8 (et le fait que les tables et champs aient un interclassement "utf8_unicode_ci" ou "utf8_general_ci" ne garantit pas que tes données soient en UTF-8).
- S'assurer que les tables et champs sont bien marquées comme étant en UTF-8, et que la connexion à la base de données se fait en UTF-8 également (le SET NAMES devrait régler ça).
- Ne pas modifier le codage des données reçues avec des fonctions PHP du type utf8_encode ou utf8_decode, etc.
- Bien déclarer les pages comme étant en UTF-8, aussi bien dans le code HTML que dans les en-têtes HTTP.
- Vérifier que le navigateur utilise bien UTF-8 pour afficher la page (dans Firefox: Affichage > Encodage des caractères, voir l'option sélectionnée automatiquement par le navigateur). Si l'encodage est déclaré en UTF-8, ça sera UTF-8... sinon, c'est que la déclaration est mal faite.

D'après ce que tu dis, il y a au moins deux choses à vérifier: les en-têtes HTTP, et les données en base.
ok j'ai trouvé,
j'ai mis en commentaires
//mysql_query("SET NAMES 'utf8'");
//mysql_set_charset('utf8');
et sa marche