यह तभी होगा जब दोनों पक्ष प्रत्येक पक्ष में वर्ण एन्कोडिंग अंतरों के बारे में पूरी तरह से अवगत हों। कोई भी वर्ण जो दूसरी तरफ उपयोग किए गए वर्ण एन्कोडिंग द्वारा कवर नहीं किया गया है, उसे एक प्रश्न चिह्न ?
से बदल दिया जाएगा। . नहीं तो आपने Mojibake
देखा होता ।
इस विशेष मामले में, वे पक्ष जावा पक्ष और डेटाबेस पक्ष हैं, जिसमें JDBC ड्राइवर मध्यस्थ के रूप में है। इसे ठीक करने के लिए, आपको JDBC ड्राइवर को यह बताना होगा कि वे वर्ण किस एन्कोडिंग में हैं। आप useUnicode=true&characterEncoding=UTF-8
सेट करके ऐसा कर सकते हैं। JDBC कनेक्शन URL में पैरामीटर।
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8
फिर, आप क्लाइंट से सर्वर पर पैरामीटर कैसे भेज रहे हैं, इस पर निर्भर करते हुए, आपको संभवतः अनुरोध एन्कोडिंग को ठीक करने की भी आवश्यकता है। इस तथ्य को देखते हुए कि जब आप request.setCharacterEncoding("UTF-8")
हटाते हैं तो आप Mojibake देख रहे हैं , आप पोस्ट का उपयोग कर रहे हैं। तो वह हिस्सा ठीक है।
उस स्थिति के लिए, यदि आप पैरामीटर भेजने के लिए GET का उपयोग कर रहे थे, तो आपको सर्वर साइड में URI एन्कोडिंग को कॉन्फ़िगर करना होगा। यह स्पष्ट नहीं है कि आप किस सर्वर का उपयोग कर रहे हैं, लेकिन उदाहरण के लिए टॉमकैट के मामले में, यह <Connector>
को संपादित करने का मामला है। /conf/server.xml
में एंट्री इस प्रकार है:
<Connector ... URIEncoding="UTF-8">