ग्राहक प्रश्नों के उत्तर में, यह दस्तावेज़ वर्णन करता है कि HS_LANGUAGE
. कैसे सेट किया जाए और HS_NLS_NCHAR
DG4ODBC का उपयोग करते समय पैरामीटर।
यदि आप एक यूनिकोड ODBC ड्राइवर जैसे SQL सर्वर ODBC ड्राइवर का उपयोग कर रहे हैं, तो सुनिश्चित करें कि ये पैरामीटर और मान आपकी DG4ODBC init फ़ाइल में मौजूद हैं:
HS_LANGUAGE = language_territory.code_page HS_NLS_NCHAR = UCS2
भाषा बदलें , क्षेत्र और code_page Oracle® भाषा, क्षेत्र और कोड पृष्ठ के साथ जो आपके डेटाबेस की भाषा, स्थान और कोड पृष्ठ के अनुरूप है।
उदाहरण के लिए, यदि आपका डेटाबेस SQL सर्वर है, और इसकी भाषा और कोड पृष्ठ English (United States)
हैं और 1252
, आपका HS_LANGUAGE
पैरामीटर इस तरह दिखेगा:
HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
HS_NLS_NCHAR
पैरामीटर मान DG4ODBC को यूनिकोड ODBC APIs को UCS-2 एन्कोडेड डेटा पास करने के लिए कहता है, जो कि ODBC मानक राज्यों को एन्कोडिंग करने वाला वर्ण है और इसलिए यूनिक्सोडबीसी ड्राइवर प्रबंधक की अपेक्षा की जाती है।
यह भी सुनिश्चित करें कि आपने NLS_LANG
. सेट किया है अपना Oracle® एप्लिकेशन शुरू करने से पहले। NLS_LANG
Oracle® को यह जानने देता है कि आपकी क्लाइंट मशीन किस वर्ण सेट का उपयोग कर रही है। उदाहरण के लिए:
$ echo $LANG en_US.UTF-8 $ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus
यदि आप एक ANSI ODBC ड्राइवर का उपयोग कर रहे हैं (जो विस्तृत ODBC API कॉल का समर्थन नहीं करता है), तो आपको HS_LANGUAGE
में एक गैर UTF-8 वर्ण सेट निर्दिष्ट करना होगा मूल्य। उदाहरण के लिए, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
. यदि आप ऐसा नहीं करते हैं और आपके Oracle® डेटाबेस के NLS_CHARACTERSET
मान UTF-8 एन्कोडिंग पर सेट है, उदाहरण के लिए AL32UTF8
, डीजी4ओडीबीसी:
- यूनिकोड ODBC API का उपयोग करता है, उदाहरण के लिए,
SQLDriverConnectW
, जिसे यूनिक्सोडबीसी चालक प्रबंधक उनके एएनएसआई समकक्ष (या यदि आपकाHS_FDS_SHAREABLE_NAME
पर मैप करता है) पैरामीटर ओडीबीसी ड्राइवर साझा ऑब्जेक्ट को इंगित करता है, कनेक्शन को "अपरिभाषित प्रतीक" त्रुटि के साथ विफल होने का कारण बनता है)। - ओडीबीसी एपीआई को यूटीएफ -8 एन्कोडेड डेटा पास करता है, जो यूनिक्सोडबीसी चालक प्रबंधक का समर्थन नहीं करता है। कनेक्शन विफल हो जाता है क्योंकि DG4ODBC एक UTF-8 एन्कोडेड कनेक्शन स्ट्रिंग को
SQLDriverConnectW
पर भेजता है , जिसे यूनिक्सोडबीसी चालक प्रबंधक संभालने में असमर्थ है।
यूनिकोड ODBC ड्राइवर
यूनिकोड ओडीबीसी ड्राइवर विस्तृत ओडीबीसी एपीआई का समर्थन करते हैं, जो SQLxxxW के रूप में हैं। यह जाँचने के लिए कि क्या आपका ODBC ड्राइवर विस्तृत ODBC API का समर्थन करता है, या तो अपने ड्राइवर विक्रेता से जाँच करें, या, ODBC ड्राइवर लॉगिंग सक्षम करें, DG4ODBC से कनेक्ट करें और परिणामी लॉग फ़ाइल की जाँच करें। उदाहरण के लिए:
$ more /etc/odbc.ini [SQLSERVER_SAMPLE] . . . Logging=Yes LogFile=/tmp/mssql.log $ ./sqlplus / as sysdba $ select * from mytable@mssqllink; $ exit $ more /tmp/mssql.log . . . ENTRY: SQLGetInfoW: connection_handle...