2012-03-29 45 views
16

Tengo un archivo xml que contiene caracteres arábigos. Cuando intento analizar un archivo, surge la excepción, MalformedByteSequenceException: byte inválido 2 de 2 bytes UTF- 8 sequence.I Use POI DOM para analizar el documento.MalformedByteSequenceException: Byte inválido 2 de 2 bytes secuencia UTF-8

El Registro es,

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) 

La excepción surgen sólo en las ventanas de la máquina, se plantea en Linux Machine.How puedo resolver la sugerencia issue.Any debe ser apreciable.

Respuesta

13

He resuelto el problema creando el archivo XML utilizando el formato UTF8.

OutputStreamWriter bufferedWriter = new OutputStreamWriter(filePath + 
         System.getProperty("file.separator") + fileName), "UTF8"); 

Después de crear el archivo con el código anterior, el problema de codificación es resolved.Thanks para cada uno, poner el esfuerzo aquí.

+3

Esta es la solución que funcionó para mí, pero tenía que hacer un pequeño cambio: OutputStream OS = new FileOutputStream (archivo); y OutputStreamWriter bufferedWriter = new OutputStreamWriter (os, "UTF8"); – maxivis

0

Creo que su analizador espera un byte codificado en UTF-8 y lo recibe en una codificación diferente. Verifica la codificación del archivo.

Una posible solución puede ser convertir el archivo a UTF-8.

Si usted tiene un sistema UNIX, puede utilizar esta herramienta

iconv -f original_charset -t utf-8 your_file > new_file 
0

esto es caracteres del documento de inicio basada en sistema operativo. Debería usar un byte-viewer y eliminarlo de su documento. Puede intentar usar algo como unix2dos para convertir caracteres de control.

3

Todo lo que podemos decir del mensaje es que el archivo no está codificado correctamente en UTF-8. Para averiguar por qué, necesitará rastrear el historial de cómo se creó el archivo. Puede (o no) ser útil estudiar el contenido del archivo a nivel binario para ver cuál es la codificación real. Por ejemplo, puede ser útil saber si el archivo completo tiene una codificación incorrecta o si solo contiene un par de caracteres extraviados en la codificación incorrecta.

7

puede agregar un parámetro jvm -Dfile.encoding = utf-8 a su jvm.

Cuestiones relacionadas