Encodage UTF-8 d'un tableau associatif dans une classe
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 :
Code:
1 2
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
Bon, ensuite MySQL est en utf-8 : tout mes champs text sont en utf-8 général.
Ensuite je m'assure de bien dialoguer en utf-8 avec :
Code:
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. |
J'include mes fichiers comme suit :
Code:
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. |
Dans ma base de donnée, j'ai une table contenant des noms avec accents.
Je récupere ces noms que je souhaite utiliser en tant que clé dans un tableau associatif :
Code:
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;
} |
Ok, vous me suivez ?
Ensuite je souhaite, plus tard, afficher ce tableau associatif dans ma page, je fait donc appel a la methode affiche() qui fait: :
Code:
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;
} |
Malheureusement, les caractères spéciaux du nom sont mal encodé (des ? à la place des accents)
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,