json_encode(): Invalid UTF-8 de la séquence d'argument

Je vais appeler json_encode() sur des données provenant d'une base de données MySQL avec utf8_general_ci classement. Le problème est que certaines lignes ont bizarre de données que je ne peux pas nettoyer. Par exemple le symbole de , donc une fois qu'il atteint json_encode(), il échoue avec json_encode(): Invalid UTF-8 sequence in argument.

J'ai essayé utf8_encode() et utf8_decode(), même avec mb_check_encoding() mais il ne cesse de se par et causer des ravages.

L'exécution de PHP 5.3.10 sur Mac. Donc la question est - comment puis-je nettoyer invalide utf8 symboles, en gardant le reste des données, de sorte que json_encoding() pourrait fonctionner?

Mise à jour. Voici un moyen de le reproduire:

echo json_encode(pack("H*" ,'c32e'));
  • Êtes-vous sûr que vous êtes à la récupération de vos données encodées en UTF-8 à partir de la base de données? Quelles données avez-vous, qu'attendez-vous? Nous montrer une bin2hex de la problématique de données.
  • bin2hex donne c32e
  • "\xC3\x2E" est en effet pas valide chaîne UTF-8. Où est-il en venir? MySQL ne devrait pas sortie non valide des chaînes UTF-8 si c'est le retour de l'UTF-8.
  • Je vais avoir le même problème mais l'interrogation à partir de SQL Server via une connexion ODBC et mon caractère spécial est: ®. Il semble que personne n'a résolu ce problème.
  • Avez-vous essayé le JSON_UNESCAPED_UNICODE drapeau?