O que significa essa exception: Invalid byte 2 of 3-byte UTF-8 sequence - RESOLVIDO

0 respostas
J
Estou passando uma string que representa o XML que retornou do SEFAZ para um DocumentBuilder e está me dando essa Exception:
java.io.UTFDataFormatException: Invalid byte 2 of 3-byte UTF-8 sequence.
    at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
    at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
    at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
    at org.apache.xerces.impl.XMLEntityScanner.scanContent(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanContent(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
    at emissor.lib.NFe.statusServico(NFe.java:331)
    at emissor.ui.NotasFiscaisUI$1.run(NotasFiscaisUI.java:110)
A string que está sendo passada é:
<?xml version="1.0" encoding="UTF-8"?><retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006e</verAplic><cStat>107</cStat><xMotivo>Serviço em Operação</xMotivo><cUF>35</cUF><dhRecbto>2010-09-22T10:57:45</dhRecbto><tMed>1</tMed></retConsStatServ>
O código que faz isso é esse aqui:
NfeStatusServicoNF2Result resp = nfe.nfeStatusServicoNF2(nf, nfeCabecMsg);
        String strXmlRetorno = resp.getExtraElement().toString();
        strXmlRetorno = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + strXmlRetorno;

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        Document doc = factory.newDocumentBuilder().parse(new ByteArrayInputStream(strXmlRetorno.getBytes())); // exception ocorre aqui

O estranho é que isso só ocorre quando eu executo a aplicação com JWS, se for normal (pelo NB) não dá esse problema.

Alguém tem alguma ideia do que pode ser?
Resolvido assim:
Document doc = factory.newDocumentBuilder().parse(new ByteArrayInputStream(strXmlRetorno.trim().getBytes("UTF8")));
Criado 22 de setembro de 2010
Respostas 0
Participantes 1