C'est bien que vous utilisiez mysql_real_escape_string() !
Je pense que le problème pourrait être que, dans une page de formulaire parallèle -> fichier d'en-tête -> fichier principal -> fichier de macro mysql -> insertion dans la base de données, etc. Si vous utilisez une méthode CMS bien sûr.
Donc en gros :
- Assurez-vous que toutes vos tables et cellules dans mysql sont en UTF8
- Ajoutez ceci à votre macro mysql ou juste après avoir créé la connexion mysql :
mysql_query("SET NAMES utf8");
- Ajoutez ceci à votre fichier principal ou en haut de votre page php :
Header("Content-Type: text/html; charset=UTF-8");
- Et bien sûr la balise meta, qui définit l'encodage dans le fichier html/template.
Si vous avez maîtrisé ces étapes, cela devrait être corrigé. Si ce n'est pas le cas, vous avez au moins débogué de nombreux problèmes possibles :)