2012-10-26 37 views
5

Üretim ortamında yukarıdaki hatayla karşılaşıyorum, işlem UAT'de iyi geçti.org.xml.sax.SAXParseException: 3 bayt UTF-8 dizisinin geçersiz bayt 2'si

Bu hatanın jar dosyası yüklemesiyle ilgili olup olmadığını merak ediyordum. Webmethods kullanıyoruz ve bir java servisi için yukarıdaki hata oluştu.

+0

Daha fazla bilgi verir misiniz? Belki tam bir yığın izi, belki bir kod, belki bir örnek dosya? Ayrıca, örnek dosyasında geçersiz karakterin nerede algılandığını tespit ederseniz ... Sonunda üretim dosyasını UAT'ye yaymaya ve hata devam edip etmediğine bakın. – durron597

+0

ah kom craquelé turq 12cm Yukarıdaki xml UAT'de aynı dosya üretilirken UAT'de ayrıştırıldı ... – abhijith501

+1

Bu sorunun tam nedenini buldum .. Şey, üretimde bulunan yerel ve varsayılan karakter ve kabul farklıdır .. Bu diziyi kullandım deEncoding = "" + Charset.defaultCharset(); Dize yerel değeri = "" + Locale.getDefault(); yerelleri bulmak için .. Kodlamalar ve yereller farklıdır .. UTF-8 değerini byteArray = inputInXML.getBytes ("UTF-8") olarak kodladım; ve sonuç – abhijith501

cevap

0

Yüklediğiniz xml dosyası doğru şekilde kodlanmamış: üretim ortamı dosyalarına bakın, en az bir tanesi UTF-8 değil.

+0

Cevabınız için teşekkürler .. tüm dosyaları kontrol ettim ve hepsi UTF-8 kodlu ... Kavanoz dosyaları ile ilgili bir şüphe var. Bu istisna kavanozlar ile ilgilidir .. – abhijith501

+0

Kavanozlar üretimde ve testte aynı mıdır? İki envs arasındaki farklara bak. Bir kavanoz, çalışma zamanında ayrıştırılmış bir XML dosyası içerebilir. – Aubin

+0

castor-xml-schema-1.2.jar Bu jar dosyasının kullanımı nedir. – abhijith501

6

En olası senaryo, dosyanın ISO-8859-1 kodlu olduğu ve genişletilmiş ASCII (0x80 ile 0xff arası karakterler arasında karakterler) içermesidir. Ayrıştırıcı, UTF-8'i bekliyor ve genişletilmiş karakterlerden biri, 3 baytlık bir dizinin başlangıcı olarak yorumlanıyor, ancak bu konumda geçerli bir bayt tarafından takip edilmiyor.

+1

başarısıdır Bu sorunun tam nedenini buldum .. Şey, üretimde bulunan yerel ve varsayılan karakter ve kabul farklıdır .. Bu String'i kullandım = \ "+ Charset.defaultCharset() ; String locale = "" + Locale.getDefault(); yerelleri bulmak için .. Kodlamalar ve yereller farklıdır .. UTF-8 değerini byteArray = inputInXML.getBytes ("UTF-8") olarak kodladım; ve sonuç başarıdır – abhijith501

İlgili konular