L'un de nos fournisseurs envoie parfois des flux XML étiquetés en tant que documents codés en UTF-8, mais inclut des caractères qui ne sont pas inclus dans le jeu de caractères UTF-8. Cela provoque l'analyseur de lancer une exception et d'arrêter la construction de l'objet DOM lorsque ces caractères sont rencontrés:Réparation d'un codage incorrect dans les fichiers XML
DocumentBuilder.parse(ByteArrayInputStream bais)
lève l'exception suivante:
org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
est-il un moyen de « capturer » ces problèmes au début et éviter l'exception (c'est-à-dire trouver et supprimer ces caractères du flux)? Ce que je cherche est un type de repli de «meilleur effort» pour les documents mal encodés. La solution correcte serait évidemment d'attaquer le problème à la source et de s'assurer que seuls les bons documents sont livrés, mais quelle est une bonne approche lorsque cela n'est pas possible?
Merci pour le conseil. Il a évité l'exception, malheureusement cela ne m'a pas beaucoup aidé car il semble que les caractères illicites soient dans les chaînes d'identificateurs que j'extrais (et dont j'ai besoin), et que ceux-ci reçoivent le mauvais encodage maintenant. Je pense que je vais devoir attendre que les fournisseurs de contenu corrigent leur erreur. – Burre