Bonjour medames et messieurs !
J'ai un problème d'encodage ! Encore un, me direz-vous !
Je vous explique le souci :
Mon site est en utf-8 :Bon, ensuite MySQL est en utf-8 : tout mes champs text sont en utf-8 général.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Ensuite je m'assure de bien dialoguer en utf-8 avec :J'include mes fichiers comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // Code contenu dans conf.php mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8 "); mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn); // $conn correspond à ma connexion de base de donnée, bien entendu.Dans ma base de donnée, j'ai une table contenant des noms avec accents.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 require('conf.php'); // connexion à ma base de données - en utf8 require("test.class.php"); // include de ma class php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> // et puis le reste de la page.
Je récupere ces noms que je souhaite utiliser en tant que clé dans un tableau associatif :Ok, vous me suivez ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // Code contenu dans test.class.php while($tr=mysql_fetch_assoc($req)){ $nom=$tr['nom']; $this->tableauAssociatif[$nom]=$valeur; }
Ensuite je souhaite, plus tard, afficher ce tableau associatif dans ma page, je fait donc appel a la methode affiche() qui fait: :Malheureusement, les caractères spéciaux du nom sont mal encodé (des ? à la place des accents)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // code contenu dans la methode affiche() de ma classe test.class.php foreach($this->tableauAssociatif as $nom => $valeur){ echo $nom; }
Je rajouterai que, si j'affiche directement les noms depuis ma base de donnée, les caractères sont correctement affichés. J'en ai déduit qu'il y avait un souci au niveau de la classe et de sa perception de l'encodage en utf-8.
Je vous remercie d'avance pour votre aide,
Partager