कैरेक्टर सेट रूपांतरण डेटाबेस कनेक्शन स्तर पर किया गया है। आप पैरामीटर "ऑटो अनुवाद = गलत" पैरामीटर के साथ ओडीबीसी या एडीओडीबी कनेक्शन स्ट्रिंग में स्वचालित रूपांतरण को मजबूर कर सकते हैं। यह अनुशंसित नहीं है। देखें: https://msdn.microsoft.com/en-us/library/ms130822.aspx
SQL सर्वर 2005 में एक कोडपेज असंगतता है जब डेटाबेस और क्लाइंट कोडपृष्ठ मेल नहीं खाता था। https://support.microsoft.com/kb/KbView/904803
एसक्यूएल-प्रबंधन कंसोल 2008 और ऊपर एक यूनिकोड आवेदन है। दर्ज या अनुरोध किए गए सभी मानों को एप्लिकेशन स्तर पर इस प्रकार व्याख्या किया जाता है। कॉलम संयोजन से और उससे बातचीत बातचीत पूरी तरह से की जाती है। आप के साथ इस की पुष्टि कर सकते हैं:
SELECT CAST(N'±' as varbinary(10)) AS Result
यह 0xB100
जो यूनिकोड वर्ण U + 00B1 (प्रबंधन कंसोल विंडो में डाला गया है) है वापस आ जाएगी। आप प्रबंधन स्टूडियो के लिए "ऑटो अनुवाद" बंद नहीं कर सकते हैं।
यदि आप चयन में एक अलग संयोजन निर्दिष्ट करते हैं, तो अंततः आप "ऑटो अनुवाद" सक्रिय होने तक एक डबल रूपांतरण (संभव डेटा हानि के साथ) में समाप्त हो जाते हैं। मूल चरित्र को सबसे पहले चयन के दौरान नए संयोजन में बदल दिया जाता है, जो बदले में "उचित" एप्लिकेशन कोडपेज पर "ऑटो अनुवादित" हो जाता है। यही कारण है कि आपके विभिन्न COLLATION परीक्षण अभी भी एक ही परिणाम दिखाते हैं।
आप सत्यापित कर सकते हैं कि मिलान को निर्दिष्ट करता है, चयन में एक प्रभाव हो अगर आप पहले यह प्रस्तुत किया है VARCHAR
तो एसक्यूएल सर्वर परिवर्तन ग्राहक द्वारा अवैध नहीं है के बजाय VARBINARY
के रूप में परिणाम डाली:
SELECT cast(columnName COLLATE SQL_Latin1_General_CP850_BIN2 as varbinary(10)) from tableName
SELECT cast(columnName COLLATE SQL_Latin1_General_CP1_CI_AS as varbinary(10)) from tableName
यह आपको 0xF1
मिल जाएगा या 0xB1
क्रमशः अगर columnName
सिर्फ चरित्र '±' शामिल
तुम अब भी सही परिणाम और अभी तक एक गलत चरित्र, मिल सकता है अगर फॉन्ट का प्रयोग कर रहे जनसंपर्क प्रदान नहीं करता है ग्लिफ संचालित करें।
कृपया अच्छी एक उचित नमूना पर VARBINARY
करने के लिए क्वेरी कास्टिंग द्वारा अपने चरित्र की वास्तविक आंतरिक प्रतिनिधित्व की जाँच करें और सत्यापित करें कि क्या इस कोड को वास्तव में परिभाषित डाटाबेस मिलान से मेल खाती है SQL_Latin1_General_CP850_BIN2
SELECT CAST(columnName as varbinary(10)) from tableName
आवेदन मिलान और डेटाबेस में मतभेद जब तक रूपांतरण हमेशा एक ही तरीके से किया जाता है तब तक कोलेक्शन अनजान हो सकता है। जैसे ही आप एक अलग संयोजन के साथ एक ग्राहक जोड़ते हैं, परेशानी उभरती है। फिर आप पाएंगे कि आंतरिक रूपांतरण वर्णों से सही मिलान करने में असमर्थ है।
जो कुछ भी कहा गया है, आपको यह ध्यान में रखना चाहिए कि परिणाम स्टूडियो आमतौर पर परिणाम सेट की व्याख्या करते समय अंतिम संदर्भ नहीं है। भले ही यह एमएस में अस्पष्ट दिखता है, फिर भी यह सही आउटपुट हो सकता है। सवाल यह है कि क्या आपके अनुप्रयोगों में रिकॉर्ड सही तरीके से दिखाई देते हैं।
में आपका स्वागत है: यदि आप कोड एक्सएमएल या डेटा के नमूने पोस्ट, ** कृपया ** टेक्स्ट एडिटर में उन पंक्तियों को हाइलाइट करें और संपादक टूलबार पर "कोड नमूने" बटन ('{}') पर क्लिक करें ताकि इसे अच्छी तरह से प्रारूपित और सिंटैक्स हाइलाइट किया जा सके! –