MySQL क्लाइंट-सर्वर संचार के कई पहलुओं को कॉन्फ़िगर करने की अनुमति देता है (10.4 कनेक्शन कैरेक्टर सेट और कॉलेशन दस्तावेज़ीकरण):
- स्रोत (यानी क्लाइंट) एन्कोडिंग:
character_set_client
- गंतव्य (यानी सर्वर) एन्कोडिंग:
character_set_connection
- लौटा गया डेटा और मेटा-डेटा:
character_set_results
मैं अनुमान लगा रहा हूं कि यह माना जाता है कि माइक्रोसॉफ्ट प्रौद्योगिकी से आने वाला स्रोत एन्कोडिंग यूटीएफ -16 लिटिल एंडियन है।
अन्य दो के लिए, Connector/ NET कनेक्शन-स्ट्रिंग विकल्प संदर्भ दस्तावेज़ीकरण बताता है:
MySQL से कनेक्शन को बताया जाना चाहिए कि लक्ष्य एन्कोडिंग UTF-8 है (जो कि आपके MySQL कॉलम का उपयोग कर रहे हैं)। MySQL वर्तमान में मान रहा है कि आप गैर-यूनिकोड स्ट्रिंग्स भेज रहे हैं, प्रभावी रूप से वही काम कर रहे हैं जैसे VARCHAR
में कनवर्ट करना SQL सर्वर में, यह मानते हुए कि वर्तमान डेटाबेस के डिफ़ॉल्ट Collation द्वारा निर्दिष्ट कोड पृष्ठ 1252 है (Windows कोड पृष्ठ 1252 को आमतौर पर "एएनएसआई
", भले ही वह तकनीकी रूप से . हो गलत नाम)।
निम्नलिखित एक अपर-केस "N" के साथ स्ट्रिंग को प्रीफ़िक्स न करके SQL सर्वर में व्यवहार दिखाता है:
SELECT 'α'; -- Database's default Collation = Latin1_General_100_CI_AS_SC
-- a
SELECT 'α'; -- Database's default Collation = Hebrew_100_BIN2
-- ?
इसे ठीक करने के लिए निम्न प्रयास करें:
-
यूटीएफ -8 के रूप में MySQL में वर्ण डेटा भेजने के लिए पहला प्रयास आपके कनेक्शन स्ट्रिंग में निम्नलिखित को जोड़ने का होना चाहिए (इसे बस सेट करना चाहिए
character_set_connection
):CharSet=utf8;
पूर्ण कनेक्शन स्ट्रिंग उदाहरण यहां
-
दूसरा प्रयास एक SQL कमांड भेजने का होना चाहिए, प्रारंभिक कनेक्शन पर, सत्र-स्तर चर सेट करने के लिए जो गंतव्य एन्कोडिंग को नियंत्रित करता है:
SET character_set_connection = utf8;
अधिक जानकारी के लिए, कृपया निम्नलिखित देखें:
उस पृष्ठ के "utf8 Collations" अनुभाग के अनुसार, utf8_unicode_ci
का उपयोग करना कहीं बेहतर होगा utf8_general_ci
. के बजाय मिलान के लिए (स्पष्ट होने के लिए, इस सिफारिश का चरित्र रूपांतरण मुद्दे से कोई लेना-देना नहीं है, जिसे यहां निपटाया जा रहा है)।
पी.एस. इस प्रश्न / उत्तर में DBA.StackExhange पर एक साथी प्रश्नोत्तर है:
SQL सर्वर में NVARCHAR को बेस64 स्ट्रिंग को डीकोड करते समय मुझे गलत वर्ण क्यों मिलते हैं?