संपादित करें:ध्यान दें कि Oracle पर UTF को संभालने का सबसे अच्छा तरीका डेटाबेस कैरेक्टर सेट AL32UTF8 का उपयोग करके डेटाबेस बनाना है, और सामान्य varchar2 कॉलम का उपयोग करना है। nchar कॉलम का उपयोग करने में समस्याओं में से एक यह है कि जब तर्क डिफ़ॉल्ट रूप से nchar के रूप में भेजे जाते हैं, तो oracle साधारण char/varchar2 कॉलम के लिए अनुक्रमणिका का उपयोग नहीं कर सकता है।
वैसे भी:यदि आप डेटाबेस को परिवर्तित नहीं कर सकते:
सबसे पहले, यूनिकोड अक्षर को 'n' से पहले लगाना होगा, जैसे:
select n'Language - Språk - Język' from dual;
<ब्लॉकक्वॉट> *) 8-बिट एनकोडिंग इस टेक्स्ट को हैंडल नहीं कर सकते हैं
दुर्भाग्य से, यह पर्याप्त नहीं है।
किसी कारण से, डेटाबेस क्लाइंट के लिए डिफ़ॉल्ट व्यवहार सभी स्ट्रिंग अक्षर को डेटाबेस वर्ण सेट में अनुवाद करना है, जिसका अर्थ है कि डेटाबेस को स्ट्रिंग देखने से पहले ही मान बदल दिए जाएंगे।
NCHAR या NVARCHAR कॉलम में यूनिकोड वर्ण डालने में सक्षम होने के लिए क्लाइंट को कुछ कॉन्फ़िगरेशन की आवश्यकता होती है:
यूनिक्स पर SQL प्लस
ये एनवायरोनेमनेट वैरिएबल यूटीएफ -8 फाइलों का उपयोग करने के लिए यूनिक्स पर्यावरण और एसक्लप्लस सेट करते हैं, और यूनिकोड में स्ट्रिंग अक्षर भेजने के लिए एसक्लप्लस को भी कॉन्फ़िगर करते हैं।
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LC_CTYPE="en_US.UTF-8"
ORA_NCHAR_LITERAL_REPLACE=true
(en_US.UTF-8 सोलारिस के लिए है - लिनक्स या अन्य सिस्टम को अलग-अलग स्ट्रिंग्स की आवश्यकता हो सकती है, locale -a
का उपयोग करें। समर्थित स्थानों को सूचीबद्ध करने के लिए।)
JDBC ड्राइवर
Oracles JDBC ड्राइवर का उपयोग करने वाले अनुप्रयोगों में यूनिकोड में स्ट्रिंग्स लिटरल भेजने के लिए निम्नलिखित सिस्टम प्रॉपर्टी को परिभाषित करने की आवश्यकता होती है।
-Doracle.jdbc.defaultNChar=true
-Doracle.jdbc.convertNcharLiterals=true
एसक्यूएल डेवलपर
sqldeveloper.conf का पता लगाएँ, और निम्नलिखित पंक्तियाँ जोड़ें:
AddVMOption -Doracle.jdbc.defaultNChar=true
AddVMOption -Doracle.jdbc.convertNcharLiterals=true
माइक्रोसॉफ्ट विंडोज़ पर SQL प्लस
मैंने कोशिश नहीं की है कि Microsoft Windows पर SQLplus या Toad utf-8 को बिल्कुल भी हैंडल करता है। Sqlplusw.exe ऐसा कर सकता है, और निम्न रजिस्ट्री सेटिंग्स चाल कर सकती हैं।
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ORA_NCHAR_LITERAL_REPLACE=true