Comment réparer Invalide 1 octet 1 octets UTF-8 séquence

Je suis en train de chercher le code xml ci-dessous à partir de la db à l'aide d'une méthode en java mais j'obtiens une erreur

Code utilisé pour parser le xml

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

InputSource is = new InputSource(new ByteArrayInputStream(cond.getBytes()));

Document doc = db.parse(is);

Element elem = doc.getDocumentElement();

//here we expect a series of <data><name>N</name><value>V</value></data>
NodeList nodes = elem.getElementsByTagName("data");

TableID jobId = new TableID(_processInstanceId);
Job myJob = Job.queryByID(_clientContext, jobId, true);

if (nodes.getLength() == 0) {
    log(Level.DEBUG, "No data found on condition XML");

}

for (int i = 0; i < nodes.getLength(); i++) {
    //loop through the <data> in the XML

    Element dataTags = (Element) nodes.item(i);
    String name = getChildTagValue(dataTags, "name");
    String value = getChildTagValue(dataTags, "value");

    log(Level.INFO, "UserData/Value=" + name + "/" + value);

    myJob.setBulkUserData(name, value);
}

myJob.save();

Les Données

<ContactDetails>307896043</ContactDetails>
<ContactName>307896043</ContactName>
<Preferred_Completion_Date>
</Preferred_Completion_Date>
<service_address>A-End Address: 1ST HELIERST HELIERJT2 3XP832THE CABLES 1 POONHA LANEST HELIER JE JT2 3XP</service_address>
<ServiceOrderId>315473043</ServiceOrderId>
<ServiceOrderTypeId>50</ServiceOrderTypeId>
<CustDesiredDate>2013-03-20T18:12:04</CustDesiredDate>
<OrderId>307896043</OrderId>
<CreateWho>csmuser</CreateWho>
<AccountInternalId>20100333</AccountInternalId>
<ServiceInternalId>20766093</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
<Primary_Offer_Name  action='del'>MyMobile Blue &#163;44.99 [12 month term]</Primary_Offer_Name>
<Disc_Reason  action='del'>8</Disc_Reason>
<Sup_Offer  action='del'>80000257</Sup_Offer>
<Service_Type  action='del'>A-01-00</Service_Type>
<Priority  action='del'>4</Priority>
<Account_Number  action='del'>0</Account_Number>
<Offer  action='del'>80000257</Offer>
<msisdn  action='del'>447797142520</msisdn>
<imsi  action='del'>234503184</imsi>
<sim  action='del'>5535</sim>
<ocb9_ARM  action='del'>false</ocb9_ARM>
<port_in_required  action='del'>
</port_in_required>
<ocb9_mob  action='del'>none</ocb9_mob>
<ocb9_mob_BB  action='del'>
</ocb9_mob_BB>
<ocb9_LandLine  action='del'>
</ocb9_LandLine>
<ocb9_LandLine_BB  action='del'>
</ocb9_LandLine_BB>
<Contact_2>
</Contact_2>
<Acc_middle_name>
</Acc_middle_name>
<MarketCode>7</MarketCode>
<Acc_last_name>Port_OUT</Acc_last_name>
<Contact_1>
</Contact_1>
<Acc_first_name>.</Acc_first_name>
<EmaiId>
</EmaiId>

L'ERREUR

 org.apache.xerces.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.

J'ai lu dans certains fils, c'est à cause de certains caractères spéciaux dans le fichier xml.
Comment résoudre ce problème ?

  • Comme vous l'avez sûrement remarqué que votre question est difficile à comprendre sans une mise en forme appropriée.
  • Cela n'aide pas que vous n'avez pas le code, mais je soupçonne votre fichier XML est fondamentalement non valide. Je soupçonne que c'est en prétendant être en UTF-8, mais n'est pas en UTF-8. Vous devriez corriger ce qu'il a de produire le mauvais fichier.
  • Certainement vérifier la base de données; s'ils sont correctement stockés en tant que UTF-8, vérifiez si le connecteur java a besoin d'un réglage à l'UTF-8 (pour MySQL). Si la base de données est mal défini prenez la peine de passer à l'UTF-8 comme il est plus polyvalent.
  • Salut, Pouvez-vous dire à quelqu'un où ce sera définie en db
  • Pouvez-vous montrer un hex dump de la première quelques dizaines d'octets d'entrée?
  • Aussi, vos données peuvent être un document XML valide fragment, mais il n'est certainement pas un document XML valide, car il y a plusieurs éléments à la racine, tandis que les documents XML doivent avoir exactement un élément racine donc db.parse aboutira pas, même après avoir corrigé le problème immédiat.
  • pour les adeptes, ce message d'erreur peut signifier que vous avez "bizarre octets" à la fin de votre document XML, pas nécessairement le début. Dans mon cas, c'était une somme de contrôle binaire choses à la fin qui n'était pas de l'UTF-8 valide, mais le début a tous 🙂

InformationsquelleAutor shaiksha | 2013-03-21