Bonjour,
Je suis confronté à un drôle de problème (récurrent avec l'encodage).
Je dois afficher des données à partir d'une base avec un interclassement défini en utf8_unicode_ci, sur des pages avec charset en utf-8, et avec un fichier .htaccess précisant bien : AddDefaultCharset UTF-8.
Dans cette page, soit s'affichent plusieurs annonces avec extrait du texte de chacune et un un lien "Voir le détail de cette annonce", soit (une fois cliqué sur un lien) l'annonce complète.
Le résultat?
Dans les annonces, en lieu et place des caractères accentués s'affichent de magnifiques : � , mais dans l'annonce seule, les caractères accentués s'affichent correctement...
J'ai (tout?) testé et essayé:
=> déclaration dans la page :
//force l'encodage en utf8
mb_internal_encoding("UTF-8");
=> déclaration dans mes boucles :
$utf = mysql_query("SET NAMES UTF8");
Rien n'y fait, les accents sont toujours remplacés...
Lorsque je fais
echo mb_internal_encoding($le_texte);
dans la page regroupant plusieurs annonces, j'ai en réponse: UTF-8 sur une ou deux annonces, et ASCII sur une autre.
Et si j'enlève
mb_internal_encoding("UTF-8");
et que je fasse un
echo mb_internal_encoding();
une fois j'ai de l'UTF-8, une autre de l'ISO-8859-1.
J'ai lu et relu
l'article/tuto de AB à ce sujet (merci encore à lui) et je vois bien que typiquement cela viendrait d'un enregistrement en ISO dans la base...Or, comme dit plus haut, ma base est définie en utf-8. Et les enregistrements actuels ont été réalisés à partir de phpMyAdmin (ce pourrait il que celui-ci travaille en ISO même lorsque tout est réglé en UTF-8?)
Auriez vous des explications, des idées, des pistes, des suggestions, pour résoudre ce soucis?
D'avance merci.