Vous alimentez des données de caractère corrompues dans la fonction ou vous ne spécifiez pas le bon codage.
J'ai eu ce problème il y a un certain temps, l'ancien comportement (avant PHP 5.2.7 je crois) était de retourner la chaîne malgré la corruption, mais depuis cette version, elle va lancer cette erreur à la place.
Ma solution consistait à écrire un script pour alimenter mes chaînes via iconv en utilisant le modificateur // IGNORE pour supprimer les données corrompues. (Nous avions une base de données corrompue qui contenait certaines chaînes en UTF-8, certaines en latin-1 avec des types de caractères mal définis dans les colonnes).
(Regarder le commentaire à la réponse de Tatu, je commencerais en regardant (et jouer avec) le contenu de la variable $ charset.
ligne Post 207 s'il vous plaît –