web-dev-qa-db-fra.com

octet non valide 2 de la séquence UTF-8 sur 2 octets

J'essaie d'analyser un fichier XML avec <?version = 1.0, encoding = UTF-8>.__, mais j'ai rencontré un message d'erreur invalid byte 2 of 2-byte UTF-8 sequence. Est-ce que quelqu'un sait ce qui a causé ce problème?

25
flyingfromchina

Le plus souvent, cela est dû à l'alimentation ISO-8859-x (Latin-x, comme Latin-1), mais l'analyseur pense qu'il reçoit UTF-8. Certaines séquences de caractères Latin-1 (deux caractères consécutifs avec des accents ou des trémas) constituent un élément non valide sous la forme UTF-8, et plus précisément, de sorte que, en fonction du premier octet, le deuxième octet contient des bits de poids fort inattendus.

Cela peut facilement se produire lorsque certains processus extraient XML à l'aide de Latin-1, mais oublient de générer la déclaration XML (auquel cas l'analyseur XML doit utiliser par défaut UTF-8, conformément à la spécification XML), ou déclare qu'il s'agit de UTF-8 même s'il ne l'est pas.

21
StaxMan

Soit l'analyseur est défini pour UTF-8 même si le fichier est encodé autrement, soit le fichier est déclaré comme utilisant UTF-8 mais ce n'est pas le cas.

5

Vous pouvez essayer de changer le codage de caractères par défaut utilisé par String.getBytes () en utf-8. Utilisez l'option VM -Dfile.encoding = utf-8.

4
atott

J'ai eu le même problème. Mon problème était que j'ai créé un nouveau fichier XML avec jdom et le FileWriter (xmlFile). FileWriter n'a pas pu créer de fichier UTF-8 . Il a été résolu à l'aide de FileOutputStream (xmlFile)}.

4
Spen

Pour ceux qui ont encore une telle erreur. 

depuis que UTF-8 est utilisé, vérifiez dans votre document xml les lettres latines ou autres: J'ai eu le même problème et la raison en était que j’avais ceci:

<n:name>Åke Jógvan Øyvind</n:name>

J'espère que cela t'aides

1
Salah Klein

J'ai également rencontré le même problème lors de l'importation de mon fichier .xml dans mon outil Java. Et j'ai trouvé une bonne solution pour cela: 1. Ouvrez le fichier .xml avec Notepad ++, puis enregistrez le fichier .xml en tant que fichier .rtf. Ensuite, ouvrez ce fichier dans l'application WordPad. 2. Enregistrez le fichier .rtf en tant que fichier .txt, puis ouvrez-le avec le Bloc-notes, puis enregistrez-le à nouveau en tant que fichier .xml. Lorsque vous enregistrez dans le Bloc-notes, vers la fin de la fenêtre contextuelle, assurez-vous de bien choisir l'option "Encodage: UTF-8" . Cela a fonctionné pour le mien, espérons que cela sera utile pour le vôtre.

0
Athu