2012-10-26 15 views
5

Sto riscontrando l'errore sopra riportato nell'ambiente di produzione mentre il processo è andato bene in UAT.org.xml.sax.SAXParseException: byte 2 non valido della sequenza UTF-8 a 3 byte

Mi chiedevo se questo errore è correlato al caricamento del file jar. Stiamo usando webmethods e l'errore di cui sopra si è verificato per un servizio java.

+0

Potete per favore fornire ulteriori informazioni? Forse una traccia stack completa, forse un po 'di codice, forse un file di esempio? Inoltre, se si riesce a capire dove nel file di esempio viene rilevato il carattere non valido ... Infine prova a propagare il file di produzione a UAT e vedere se l'errore persiste – durron597

+0

ah kom craquelé turq 12cm Quanto sopra xml viene analizzato in UAT mentre lo stesso file non funziona in produzione ... – abhijith501

+1

Ho trovato la causa esatta di questo problema. La cosa è la localizzazione e il carattere predefinito presente in produzione e l'accettazione è diversa .. Ho usato questa stringa deEncoding = "" + Charset.defaultCharset(); String locale = "" + Locale.getDefault(); per trovare le localizzazioni .. Le codifiche e le localizzazioni sono diverse .. ho hardcoded il valore UTF-8 in byteArray = inputInXML.getBytes ("UTF-8"); e il risultato è il successo – abhijith501

risposta

0

Il file xml che si carica non è codificato correttamente: dare un'occhiata ai file dell'ambiente di produzione, almeno uno non è UTF-8.

+0

Grazie per la risposta .. ho controllato tutti i file e tutti sono codificati in UTF-8 ... Ho dei dubbi riguardo i file jar. Questa eccezione si riferisce ai vasi. – abhijith501

+0

I vasi sono uguali in produzione e in prova? Guarda le differenze tra due envs. Un jar potrebbe contenere un file XML analizzato in fase di esecuzione. – Aubin

+0

castor-xml-schema-1.2.jar Qual è l'uso di questo file jar. – abhijith501

6

Lo scenario più probabile è che il file sia codificato ISO-8859-1 e contiene ASCII esteso (caratteri compresi tra 0x80 e 0xff inclusi). Il parser è in attesa di UTF-8 e uno dei caratteri estesi viene interpretato come l'inizio di una sequenza di 3 byte, ma non è seguito da un byte valido in quella posizione.

+1

Ho trovato la causa esatta di questo problema .. La cosa è il locale e il carattere predefinito presente in produzione e l'accettazione è diversa .. Ho usato questo String deEncoding = "" + Charset.defaultCharset() ; String locale = "" + Locale.getDefault(); per trovare le localizzazioni .. Le codifiche e le localizzazioni sono diverse .. ho hardcoded il valore UTF-8 in byteArray = inputInXML.getBytes ("UTF-8"); e il risultato è successo – abhijith501