SAXParseException "Invalid byte 2 of 2-byte UTF-8 sequence"

SAXParseException "Invalid byte 2 of 2-byte UTF-8 sequence" - Java - Programmation

Marsh Posté le 01-04-2006 à 13:42:04    

Bonjour,
 
Comme l'indique le titre, j'obtient cette erreur :

Citation :

[Fatal Error] foo.xml:22677:49: Invalid byte 2 of 2-byte UTF-8 sequence.


Or à l'endroit indiqué, on trouve cela : "NIÑO". Il plante sur le tildet donc.
L'en-tête du XML est

Citation :

<?xml version="1.0" encoding="UTF-8" ?>


Y'a t-il une solution pour éviter cette erreur ?  
 
Le XML en question est généré par un autre programme, je ne peux donc rien y faire.
 
Le code simplifié donne cela :

Code :
  1. usine = DocumentBuilderFactory.newInstance();
  2. usine.setNamespaceAware(true);
  3. usine.setValidating(false);
  4. usine.setIgnoringElementContentWhitespace(true);
  5. DocumentBuilder analyseur = usine.newDocumentBuilder();
  6. analyseur.parse(cheminXML);


Reply

Marsh Posté le 01-04-2006 à 13:42:04   

Reply

Marsh Posté le 02-04-2006 à 18:35:15    

bah y'a fort à parier qu'il est pas encodé en utf-8 ton document.
indique un autre encoding dans l'entete pour voir
(ou encode le vraiment en utf8 si tu peux)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-04-2006 à 22:29:49    

Bah en fait oui, j'ai enregistré moi même en UTF8 avec bloc notes tout simplement, et ça fonctionne.
J'ai codé ça rapidement pour le faire dans mon code (je rappelle qu'il est généré régulièrement par un autre prog), je crois que parfois ca merdait il mettait un ou deux caractères foireux au début du fichier, mais là, ca fonctionne.. allez savoir.

Code :
  1. private static String copyToUTF8(String src) {
  2.         try {
  3.             File inputFile = new File(src);
  4.             File outputFile = File.createTempFile("osef", "tmp" );
  5.             outputFile.deleteOnExit();
  6.             InputStream in = new BufferedInputStream(new FileInputStream(inputFile));
  7.             OutputStreamWriter out = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(outputFile)), "UTF-8" );
  8.             byte buffer[] = new byte[512*1024];
  9.             int nbLecture;
  10.             while ((nbLecture = in.read(buffer)) != -1)
  11.                 out.write(new String(buffer), 0, nbLecture);
  12.             in.close();
  13.             out.close();
  14.             return outputFile.getPath();
  15.         }
  16.         catch (Exception e) {
  17.             System.err.println(e);
  18.             return null;
  19.         }
  20.     }


Message édité par andOceans le 02-04-2006 à 22:31:05
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed