यह काम करता है क्योंकि निम्नलिखित शर्तें दोनों सत्य हैं:
- क्लाइंट कैरेक्टर सेट आपके डेटाबेस कैरेक्टर सेट के बराबर है।
- चरित्र सेट किसी भी बाइट मान की अनुमति देता है
आपका डेटाबेस कैरेक्टर सेट और आपका क्लाइंट कैरेक्टर सेट US7ASCII
. पर सेट है . ऐसे मामले में प्रत्येक डेटा बिना किसी रूपांतरण के एक-एक करके लिखा/पढ़ा जाता है, यानी आपके द्वारा भेजे गए बाइट डेटाबेस में बिल्कुल लिखे जाते हैं। संभवत:आपने NLS_LANG
सेट नहीं किया है आपके क्लाइंट साइड पर बिल्कुल भी लेकिन Oracle इसे AMERICAN_AMERICA.US7ASCII
पर डिफॉल्ट करता है ।
US7ASCII
एक 7-बिट एन्कोडिंग है। मुझे लगता है कि एक शुद्ध ASCII एप्लिकेशन (जिसे ढूंढना काफी मुश्किल हो सकता है) केवल 8-बिट आर्किटेक्चर में संग्रहीत 8 वें बिट को अनदेखा कर देगा। अन्य चरित्र सेट, उदा। AL32UTF8
प्रत्येक बाइट मान की अनुमति न दें। इस मामले में ऐसे पात्रों को प्लेसहोल्डर द्वारा प्रतिस्थापित किया जाएगा, उदा। ¿
या ?
।
ध्यान दें, आपने अपने क्लाइंट कैरेक्टर को US7ASCII
. पर सेट किया है जो अधिकतर सही नहीं है। इसे आपके एप्लिकेशन द्वारा उपयोग किए जाने वाले वर्ण सेट पर ठीक से सेट करें, फिर °
बदल दिया जाएगा।
यदि आप chcp
. कमांड के साथ SQL*प्लस चेक कंसोल कोडपेज का उपयोग करते हैं तो , सम्मान locale charmap
. अपना NLS_LANG
सेट करें sqlplus शुरू करने से पहले उसके अनुसार पर्यावरण चर।