MalformedByteSequenceException: octet 2 non valide de la séquence UTF-8 de 2 octets
J'ai un fichier xml qui contient des caractères arabes.Lorsque j'essaie d'analyser un fichier,il surgir l'Exception,MalformedByteSequenceException: Invalid octet 2 de 2 octets UTF-8 de la séquence.J'ai Utiliser POI DOM pour analyser le document.
Le Journal est,
2012-03-19 11:30:00,433 [ERROR] (com.infomindz.remitglobe.bll.remittance.BlackListBean) - Error
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipChar(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at com.infomindz.remitglobe.bll.remittance.BlackListBean.updateGeneralBlackListDetail(Unknown Source)
at com.infomindz.remitglobe.bll.remittance.schedulers.BlackListUpdateScheduler.executeInternal(Unknown Source)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
L'exception apparaître seulement dans la Machine windows,pas de survenir dans la Machine Linux.Comment puis-je résoudre le problème.Toute suggestion doit être appréciable.
source d'informationauteur Muneeswaran Balasubramanian
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème,par créer le fichier XML à l'aide de format UTF8.
Après avoir créer le fichier à l'aide du code ci-dessus,l'encodage problème est résolu.Merci pour tous,de faire l'effort de les ici.
vous pouvez ajouter un paramètre de jvm -Dfile.encoding=utf-8 pour votre jvm.
Tout ce que nous pouvons dire à partir du message, c'est que le fichier n'est pas correctement encodés en UTF-8. Pour savoir pourquoi, vous aurez besoin de retracer l'histoire de la façon dont le fichier a été créé. Il peut (ou ne peut pas) être utile pour étudier le contenu du fichier au niveau binaire voir quel est le codage réel. Par exemple, il peut être utile de savoir si la totalité du fichier est dans le mauvais encodage, ou si elle ne contient qu'un couple de caractères dans le mauvais encodage.
Assez simple solution:
Ref: http://www.mkyong.com/java/sax-error-malformedbytesequenceexception-invalid-byte-1-of-1-byte-utf-8-sequence/
Je pense que votre analyseur de s'attendre à un octet codé en UTF-8 et le reçoit dans un codage différent. Vérifiez l'encodage du fichier.
Une solution possible pourrait être de convertir le fichier au format UTF-8.
Si vous avez un système unix, vous pouvez utiliser cet outil
c'est l'OS de démarrage de caractères du document. Vous devez utiliser certaines des octets spectateur et de le supprimer à partir de votre document.
Vous pouvez essayer d'utiliser quelque chose comme unix2dos pour convertit des caractères de contrôle.