Question

Notre saxparser ne négligez pas la marque d'ordre d'octet which apparaît au démarrage du fichier.

Comment puis-je obtenir mon analyseur de sax ignorer la marque de l'ordre des octets?

Était-ce utile?

La solution

Il semble que vous pouvez donner entrée utf-16 à un saxparser qui ne vous attendez pas à utf-16. Essayez de convertir les données en utf-8, il peut être utile.

Autres conseils

Vérifiez le fichier dans un éditeur hexadécimal.

Si les premiers octets sont \xEF\xBB\xBF en effet suivi par le document lui-même, il est un UTF-8 faux-nomenclature. Bien que UTF-8 faux-BOM sont une faute wrongness et des outils qui les génèrent doivent être détruits avec de l'acide programmation spéciale, la spécification XML Finalité besoin parseurs de reconnaître et d'ignorer cette séquence d'octets, donc si votre analyseur SAX ne pas est pas conforme et a besoin de quelques coups de pied.

Si les premiers octets qui vous donne  sont en fait quelque chose comme l'un des:

\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\xBB\xBF\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\x00\xBB\x00\xBF\x00
\xFF\xFE\xEF\x00\xBB\x00\xBF\x00

alors ce que vous avez est un double encodage accidentel. Dans ce cas, vous devez regarder le programme de production du fichier parce qu'il est mal formé, un analyseur SAX serait correct de se plaindre, et d'autres caractères Unicode dans le fichier serait probablement foiré aussi. Peut-être qu'il fait quelque chose de stupide comme sérialisation le document à une chaîne d'octets envoyer ensuite par un décodage bogus / cycle encode.

De toute façon, si vous avez besoin d'avoir l'analyseur sauter la séquence d'octets gênant, vous devez le nourrir avec une version que vous souhaitez piraté manuellement pour supprimer ce préfixe. Sans savoir ce que vous parser SAX est (ou même langue), il est difficile de dire comment faire.

Peut-être que vous pouvez rechercher le flux d'entrée avant de passer à l'analyseur? Peut-être que vous pouvez lire le fichier dans une chaîne d'octets et passer que, tondu des premiers octets, à l'analyseur? Si votre analyseur ne vous donne pas ces options vous devez charger le fichier sous forme d'octets, découpez le début et l'enregistrer à nouveau dans un nouveau fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top