संयोजन केवल टेक्स्ट सॉर्टिंग को प्रभावित करता है, इसका संग्रहीत डेटा के वास्तविक वर्ण सेट पर कोई प्रभाव नहीं पड़ता है।
मैं इस कॉन्फ़िगरेशन की अनुशंसा करता हूं:
-
संपूर्ण DB के लिए वर्ण सेट सेट करें केवल, इसलिए आपको इसे प्रत्येक तालिका के लिए अलग से सेट करने की आवश्यकता नहीं है। कैरेक्टर सेट डीबी से टेबल से कॉलम तक विरासत में मिला है।
utf8
का उपयोग करें चरित्र सेट के रूप में। -
DB कनेक्शन के लिए वर्ण सेट सेट करें . डेटाबेस से कनेक्ट होने के बाद इन प्रश्नों को निष्पादित करें:
SET CHARACTER SET 'utf8' SET NAMES 'utf8'
-
पृष्ठ के लिए वर्ण सेट सेट करें , HTTP शीर्षलेख और/या HTML मेटा टैग का उपयोग करके। इनमें से एक काफी है।
utf-8
का उपयोग करेंcharset
. के रूप में ।
यह काफी होना चाहिए।
यदि आप स्पैनिश स्ट्रिंग्स की उचित छँटाई करना चाहते हैं, तो collation . सेट करें पूरे डेटाबेस के लिए। utf8_spanish_ci
काम करना चाहिए (ci
मतलब केस असंवेदनशील ) उचित मिलान के बिना, उच्चारण वाले स्पैनिश वर्ण हमेशा अंतिम रूप से क्रमबद्ध किए जाएंगे।
नोट :यह संभव है कि आपके पास पहले से तालिका में मौजूद डेटा का वर्ण सेट टूट गया हो, क्योंकि आपका वर्ण सेट कॉन्फ़िगरेशन पहले गलत था। इस मामले को बाहर करने के लिए आपको पहले कुछ डीबी क्लाइंट का उपयोग करके इसकी जांच करनी चाहिए। अगर यह टूटा हुआ है, तो बस अपना डेटा सही वर्ण सेट कॉन्फ़िगरेशन के साथ दोबारा डालें।
कैसे करता हैचरित्र सेट डेटाबेस में काम करें
-
ऑब्जेक्ट्स एक चरित्र सेट . है विशेषता, जिसे स्पष्ट रूप से सेट किया जा सकता है या यह विरासत में मिला है (सर्वर> डेटाबेस> तालिका> कॉलम), इसलिए सबसे अच्छा विकल्प इसे पूरे डेटाबेस के लिए सेट करना है
-
क्लाइंट कनेक्शन एक चरित्र सेट . भी है विशेषता और यह डेटाबेस को बता रहा है कि आप किस एन्कोडिंग में डेटा भेज रहे हैं
यदि क्लाइंट कनेक्शन और लक्ष्य ऑब्जेक्ट के वर्ण सेट भिन्न हैं, तो आप डेटाबेस को जो डेटा भेज रहे हैं वह स्वचालित रूप से कनेक्शन के वर्ण सेट से ऑब्जेक्ट के वर्ण सेट में परिवर्तित हो जाता है।
इसलिए यदि आपके पास उदाहरण के लिए utf8
. में डेटा है , लेकिन क्लाइंट कनेक्शन latin1
. पर सेट करें , डेटाबेस डेटा को तोड़ देगा, क्योंकि यह utf8
. को कनवर्ट करने का प्रयास करेगा जैसे यह latin1
है ।