जब आप कहते हैं कि आप सर्वर पर चलते हैं, तो आपका मतलब SQL*Plus से है?
जांच करने वाली पहली बात यह है कि वास्तविक चरित्र क्या संग्रहीत किया जा रहा है - इसे जांचने के लिए DUMP फ़ंक्शन का उपयोग करें:
Oracle डंप फंक्शन
यह आपको बताएगा कि वास्तव में क्या संग्रहीत है। यदि आपके क्लाइंट ऐप और Oracle सर्वर के बीच की श्रृंखला उपयुक्त नहीं है, तो आपको वर्ण सेट रूपांतरण हो सकता है।
मान लें कि सही वर्ण सहेजा जा रहा है, तो आप सर्वर/एसक्लप्लस पर जो देखते हैं वह प्रदर्शन पर वर्ण रूपांतरण है। अर्थात। ओरेकल चरित्र को सही ढंग से "सेवारत" कर रहा है, लेकिन डिस्प्ले इसे आपकी अपेक्षा के अनुरूप नहीं संभाल रहा है। इसे ठीक करने के लिए, आपको NLS_LANG पर्यावरण चर को सही वर्ण सेट पर सेट करना होगा।
उदाहरण के लिए, हाल ही के प्रोजेक्ट में डिफ़ॉल्ट:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
फिर दिए गए कुछ डेटा को क्वेरी करें:
NAME
-----------------------------------
MS ELLIE MARTALL
लेकिन:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
फिर दी गई क्वेरी को चलाना:
NAME
-----------------------------------
MS ÉLLIE MARTALL
और यह भी:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
दिया:
NAME
-----------------------------------
MS ╔LLIE MARTALL
यहां मुख्य बात यह है कि वास्तविक डेटा वही है, जिस तरह से आपके डिस्प्ले पर डेटा प्रस्तुत किया जा रहा है वह अलग है, और उस व्यवहार को NLS_LANG द्वारा नियंत्रित किया जा सकता है।