Salut à tous, j’ai changé des trucs dans mon site… j’ai rajouté dans le header une balise meta pour indiquer que le site est en UTF-8, j’ai re-enregistré toutes mes pages en UTF-8, mais les données de ma base restent en ANSI. J’ai donc deux questions :
-Comment convertir toutes mes données en UTF-8 ?
-Comment enregistrer les futures données en UTF-8 ?
C’est fait, malheureusement les accents ne s’affichent pas. Au lieu de ça j’ai un losange noir avec un point d’interrogation blanc dedans. J’utilise utf8_encode() sur mes chaines issues de la BDD temporairement, mais c’est pas terrible.
attention : lorsque tu va afficher des nouvelles données déjà en utf-8, ton utf8_encode() va tout péter!
Je n’ai pas la solution en tête, mais dans un premier temps faudrait détecter l’encoding et faire utf8_encode() uniquement si c’est pas déjà du utf-8! (pour rendre ta solution provisoire plus pérène)
En suite tu pourrais mettre tes vieilles données (non utf-8) dans des tables « archives » pour ne pas mélanger sur une même table des données encodées différemment.
Après t’aura tout ton temps pour trouver ta solution que je n’ai pas! lol
Doit bien y avoir des éditeurs de texte qui permettent de convertir ANSI vers UTF-8. Si tu en trouves un, exporte ta base de données sous forme de requêtes (phpmyadmin permet de le faire), ouvre le fichier de requêtes avec l’éditeur de texte, enregistre en UTF-8, et recréé la base de données à partir de ce fichier
Juste pour clarifier le tout.
Il y a plusieurs chose à prendre en compte :
Le stockage des données (dans MySQL)
L’affichage des données (l’HTML et le navigateur qui le lit)
Tu dis avoir des « losange noir avec un point d’interrogation blanc dedans » mais ne précise pas où et sur quoi ce problème survient : dans phpMyAdmin ? sur ton site ? sur du contenu provenant de ta base MySQL ? provenant de tes fichiers sources PHP/HTML ?