मैं फ्लाई पर एक XML स्ट्रिंग (फ़ाइल से नहीं पढ़ रहा) प्राप्त करता हूं। फिर मैं इसे एफओपी के माध्यम से पीडीएफ में बदलने के लिए कोकून 3 का उपयोग करता हूं। मध्य ज़ेरिस में कहीं भी चलता है। जब मैं हार्डकोडेड सामान का उपयोग करता हूं तो सब कुछ काम करता है। जैसे ही मैंने डेटाबेस में एक जर्मन ऊमलायूट रख दिया और उस डेटा मैं के साथ मेरी एक्सएमएल को बेहतर बनाने के:मेरे पास यूटीएफ -8 है - लेकिन अभी भी "1-बाइट यूटीएफ -8 अनुक्रम का अमान्य बाइट 1"
Caused by: org.apache.cocoon.pipeline.ProcessingException: Can't parse the XML string.
at org.apache.cocoon.sax.component.XMLGenerator$StringGenerator.execute(XMLGenerator.java:326)
at org.apache.cocoon.sax.component.XMLGenerator.execute(XMLGenerator.java:104)
at org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:146)
at org.apache.cocoon.pipeline.AbstractPipeline.execute(AbstractPipeline.java:76)
at de.grobmeier.tab.webapp.modules.documents.InvoicePipeline.generateInvoice(InvoicePipeline.java:74)
... 87 more
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554)
मैं तो मेरे एप्लिकेशन डिबग और पाया है बाहर, मेरी 'ए' (जो डेटाबेस frome आता है) है 1 9 6 का बाइट वैल्यू, जो हेक्स में सी 4 है। इस के अनुसार मैंने यह अपेक्षा की है: http://www.utf8-zeichentabelle.de/
मुझे नहीं पता कि मेरा कोड क्यों विफल रहता है।
मैं तो ऐसे ही स्वयं एक बीओएम जोड़ने के लिए, की कोशिश की है:
byte[] bom = new byte[3];
bom[0] = (byte) 0xEF;
bom[1] = (byte) 0xBB;
bom[2] = (byte) 0xBF;
String myString = new String(bom) + inputString;
मैं जानता हूँ कि यह वास्तव में अच्छा नहीं है, लेकिन मैं इसे करने की कोशिश की - निश्चित रूप से यह विफल रहा है। मैंने सामने एक एक्सएमएल हेडर जोड़ने की कोशिश की है:
<?xml version="1.0" encoding="UTF-8"?>
जो भी असफल रहा। फिर मैंने इसे जोड़ा। अनुत्तीर्ण होना।
सब के बाद मैं ऐसा ही कुछ करने की कोशिश की:
xmlInput = new String(xmlInput.getBytes("UTF8"), "UTF8");
कौन सा है, वास्तव में कुछ भी नहीं कर रही है, क्योंकि यह पहले से ही UTF-8 है। फिर भी यह विफल रहता है।
तो ... कोई विचार क्या मैं गलत कर रहा हूं और जेरिस मुझसे क्या उम्मीद कर रहा है?
धन्यवाद ईसाई
सहमत हुए, लेकिन यह मेरी मदद नहीं करता है। क्योंकि समस्याग्रस्त स्ट्रिंग जो डेटाबेस से आता है मेरी ओआरएम परत से बनाई गई है। इसके अलावा, इसमें 0xC4 है जो ठीक करना चाहिए, है ना? – Christian
मैं MySQL का उपयोग करता हूं, तालिका और कॉलम utf8_general_ci के साथ एन्कोड किए जाते हैं। मैंने अपने jdbc कनेक्शन में उपयोग यूनिकोड = सत्य और वर्ण एन्कोडिंग = utf8 जोड़ा है। – Christian
जब आप एक अलग एन्कोडिंग के साथ डीबी से कनेक्ट होने के लिए होते हैं तो जेडीबीसी कनेक्शन पर उन पैरामीटर को निर्दिष्ट करना एक अच्छा विचार नहीं हो सकता है - ऑटोडेटेक्शन गलत होने पर ही इसका उपयोग करें। डेटा लिखने के लिए आप क्या उपयोग करते हैं, और क्या यह एक बीएलओबी या वर्चर कॉलम है? – JBert