Comment valider si une chaîne UTF-8 contient mal les caractères encodés

Dans un grand ensemble de données, j'ai des données qui ressemble à ceci:

"guide (but, yeah, it’s okay to share it with ‘em)."

J'ai ouvert le fichier dans un éditeur hexadécimal et exécuter le raw d'octets de données par le biais d'un codage de caractères algorithme de détection (http://code.google.com/p/juniversalchardet/) et c'est détectée en tant que UTF-8.

Il me semble que la source des données mal interprété le caractère original ensemble et a écrit UTF-8 valide que pour la sortie que j'ai reçu.

J'aimerais valider les données pour le mieux que je peux. Existe-il des heuristiques/algorithmes de là-bas qui pourrait m'aider à prendre un coup de couteau à la validation?

  • Quelle est la source ici? Avez-vous pousser les données d'origine de ladite source? Au premier coup d'oeil je dirais que vous avez essayé et poussé cp-1252 apostrophes à elle sans qu'ils ne soient convertis au bon format UTF-8 équivalents...
  • Vous devez montrer comment vous êtes en train de lire les données à partir de l'ensemble de données et de la façon dont vous avez présenté les données de l'utilisateur/vous-même. Par exemple, êtes-vous à l'aide de FileReader de le lire et de System.out.println() le présenter? Vous devez indiquer un ou deux d'entre eux à utiliser l'UTF-8 au lieu de la plate-forme de jeu de caractères par défaut qui est reconnaissable en tant que CP1252.
  • Cela ressemble à un UTF-8 de la source de données (avec U+2019 codé correctement, que les octets e2 80 99) décodés à l'aide de l'octet windows-1252 encodage (où ils sont interprétés comme des points de code U+00e2 U+20ac U+2122 - ’.
  • Double Possible de Vérifier si une Chaîne est valide codé en UTF-8 en Java
InformationsquelleAutor David Parks | 2013-01-09