J'ai le même problème également en version 1.6.1 et sur une Mysql 5.0.
J'ai observé dans la 1.6.1 un certain nombre d'oublis régulier de la fonction de transcodage lors d'accès à des
ressources texte. Ces fonctions, issues de la librairie mbstring.php, permettent en principe de transcoder automatiquement toutes les anciennes fonctions d'accès à des fichiers (et plus généralement à des flux) en les remplaçant. C'est une technique un peu inhabituelle de surcharge, mais ça à l'air de marcher. Sauf que pour être vraiment sûr du résultat, une lecture d'un texte dont on ne sait pas trop bien ce qu'il contient peut être automatiquement transcodé dans le code de fonctionnement interne de moodle par un appel explicite à la fonction mb_convert_encoding($str, "<encodage source>", "<encodage cible>"). si l'un des encodages est "auto", php essaie de détecter lui-même l'encodage le plus probable. C'est facile pour lui, car il lui suffit d'un seul caractère accentué pour regarder la séquence d'échappement utilisée.
$str = mb_convert_encoding($str, "auto", "UTF-8");
permettra donc à coup sûr d'obtenir de l'UTF-8 en sortie, en espérant que vous avez bien installé Moodle en UTF-8.
J'ai donc repéré dans pas mal de sources que ce transcodage n'est pas appelé, ce qui, en le faisant m'a permis de résoudre quelques problèmes déjà dans les popups.
Je vais me mettre en quête et vous livrer une réponse "dans moodle" dès que possible pour les version 1.6.