La fixation cassées encodage UTF-8

Je suis dans le processus de la correction de certains mauvais encodage UTF-8. Je suis actuellement en utilisant PHP 5 et MySQL.

Dans ma base de données j'ai un peu de cas de mauvais encodages d'impression comme: î

  • Le classement de base de données est utf8_general_ci
  • PHP à l'aide d'un bon UTF-8, en-tête
  • Notepad++ est configuré pour utiliser UTF-8 sans BOM
  • gestion de base de données est gérée dans phpMyAdmin
  • pas le cas de tous les caractères accentués sont cassés

J'ai besoin d'une sorte de fonction qui va m'aider à cartographier les instances de l'î, ÃÂ, ü et d'autres comme lui à leur bon accentué les caractères UTF-8.

  • Pourriez-vous lister les caractères de ceux qui sont censés représenter? Et peut-être un vidage hexadécimal?
  • Un rapide coup d'oeil semble suggérer que vos chaînes pourraient avoir été "double" codé en utf-8. I. e. encodé en utf-8, ces octets pris comme des caractères unicode, et le résultat codé en utf-8. Retour en arrière: "î"="\xC3\x83\xC2\xAE" <-(utf-8)- "\xC3\xAE" <-(utf-8)- "\xEE" = "î". Ou peut-être pas -- pas beaucoup de données afin de diagnostiquer ici.
  • Il est possible que c'était un double codage. Est-il un moyen sûr d'en programmant le vérifier, et si oui, quelle est la meilleure façon sécuritaire à décoder le double encodage?
  • Oui, Jayrox, découvrez ma réponse ci-dessous.
  • l'un des problèmes autant que je sache est utf8_general_ci qui sera apparemment pas une garantie de bonne UTF8 stackoverflow.com/a/1036459/183677. Aussi ces personnages que vous mentionnez sont valables UTF8 hexutf8.com/... (mais je me rends compte de son probablement tout ce que vous voyez dans la console ou quoi que ce soit). paye pour poster les octets
  • Acc. cette réponse, mysqli_set_charset($dbc, "utf8"); pourrait aider.

InformationsquelleAutor Jayrox | 2009-08-28