Encoder ma base de données en UTF8

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 ?

Si c’est du mySQL, il faut changer la collation.

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 :slight_smile:

notepad++ le fait

A part changer l’ordre de tri des mots, je ne vois pas trop l’utilité…

Oui, certes. Cadeau : dev.mysql.com…

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 ?