शायद यही होता है:
- आपका क्लाइंट कैरेक्टर सेट CP1252 या ISO-8859-15 जैसा कुछ होना चाहिए जबकि वास्तव में आपका क्लाइंट वास्तव में UTF8 का उपयोग करता है।
- इस वर्ण सेट (UTF8) में, प्रतीक
á
दो बाइट्स लेता है, इसलिए आपका क्लाइंट इन दो बाइट्स को भेजता है, जबकि Oracle को इन्हें CP1252 के रूप में मानने के लिए कहता है। CP1252 में दो वर्णों के लिए दो बाइट्स कोड होते हैं, जिसके परिणामस्वरूप DB इनपुट को दो वर्णों के रूप में व्याख्यायित करता है, इसलिएlength('à')
2 के बराबर है (और यदि आप इस स्ट्रिंग को सम्मिलित करते हैं तो डालने का परिणामà
. के बराबर नहीं है ) - जब आप वर्ण सेट को सही ढंग से सेट करते हैं, तो oracle द्वारा इनपुट को एकल वर्ण के रूप में सही ढंग से माना जाता है, और इसकी लंबाई 1 (अभी भी दो बाइट्स) होती है।
निष्कर्ष:अपना क्लाइंट कैरेक्टर सेट ठीक से सेट करें या आपको अनुवाद त्रुटियां मिलेंगी (आपको इस तरह से अवैध वर्ण नहीं मिलेंगे लेकिन आपको अजीब प्रतीक मिल सकते हैं (¿
) )।
डेटाबेस कैरेक्टर सेट निर्माण के समय सेट किया गया है और आम तौर पर निर्यात/रिक्त डेटाबेस/आयात बनाने के माध्यम से बदला जाता है।