2010-06-14 12 views
19

मेरे पास जावा वेब एप्लिकेशन ग्लासफ़िश 3 और जेपीए (एक्लिप्ससेंक) पर MySQL पर चल रहा है। मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि यदि मैं update() विधि के साथ डेटाबेस में इकाइयों को सहेज रहा हूं, String फ़ील्ड ईमानदारी खो देते हैं; '?' कुछ पात्रों के बजाय दिखाया गया है।जेडीबीसी चरित्र एन्कोडिंग

सर्वर, पेज और डेटाबेस UTF-8 का उपयोग करने के लिए कॉन्फ़िगर किए गए हैं।

फॉर्म डेटा पोस्ट करने के बाद, अगला पृष्ठ डेटा को सही तरीके से दिखाता है। इसके अलावा नेटबीन में यह "लगता है" डीबग करता है कि वर्तमान इकाई की String संपत्ति सही मूल्य भी संग्रहीत करती है। डुनो अगर NetBeans डीबग भरोसा किया जा सकता है; हो सकता है कि यह सही ढंग से डीकोड हो, हालांकि यह गलत है।

+3

डेटाबेस क्या है और आप किस कनेक्शन स्ट्रिंग का उपयोग कर रहे हैं? –

+0

मैं MySQL का उपयोग कर रहा हूं और कनेक्शन स्ट्रिंग है: 'jdbc: mysql: // localhost: 3306/administer' –

+0

utf8mb4 का उपयोग करने वाले लोगों के लिए एक लिंक: http://dev.mysql.com/doc/connector -j/en/connector-j-context-charsets.html –

उत्तर

43

यह JDBC, नहीं जेपीए है कि निर्धारित करता है एन्कोडिंग:

jdbc:mysql://localhost:3306/administer?characterEncoding=utf8 
+0

+1 आपको बहुत उपयोगी धन्यवाद :) –

+1

एक ही समस्या में आने वाले लोगों के लिए बस एक सिडनीोट: यदि आप अपने 'दृढ़ता में जेडीबीसी यूआरएल में श्रृंखला पैरामीटर बनाना चाहते हैं .xml', आपको '&' के रूप में '&' को फिर से लिखना होगा। उदाहरण: 'jdbc: mysql: // localhost: 3306/administer? RewriteBatchedStatements = true & characterEncoding = UTF-8' –

+0

jdbc ड्राइवर (> = 5.1.13) के नए संस्करणों के लिए," characterEncoding "निर्दिष्ट न करें। एक नज़र डालें: http://stackoverflow.com/a/18059663/967062 –

11

मैं निम्नलिखित के साथ इसे हल: मैं अपने कनेक्शन पूल की सेटिंग पर इस संपत्ति जोड़ने के लिए ग्लासफिश व्यवस्थापक इंटरफ़ेस का प्रयोग किया:

characterEncoding = UTF-8

0

मैं भी useUnicode = सच जोड़ने के लिए किया था, तो मैं 'साथ मापदंडों concat करना पड़ा'तो यह इस तरह दिखता है:

jdbc:mysql://127.0.0.1:3306/warranteer?useUnicode=true&characterEncoding=UTF-8 

आप Maven प्रोफाइल उपयोग कर रहे हैं मेरे जैसे, MySQL यूआरएल सेट करने के लिए, सुनिश्चित करें कि आप क्योंकि यूआरएल unescape Maven बजाय & डाल & जब persistence.xml फ़ाइल लिखने पर विचार वर्ग फ़ोल्डर के लिए।

1

नया संस्करण जेडीबीसी चालक ऑटो चरित्र एन्कोडिंग का पता लगाता है। आपको इसे स्पष्ट रूप से सेट करने की आवश्यकता नहीं है।

संबंधित मुद्दे