मैं वरटेक जो (आपके MySQL इंस्टॉलेशन के आधार पर) आपकी समस्या का सबसे सही समाधान है। सबसे पहले MySQL में कैरेक्टर सेट/एन्कोडिंग समस्या कुछ जटिल विषय है जो MySQL मैनुअल अध्याय 9.1 "कैरेक्टर सेट सपोर्ट" . आपके मामले में विशेष रूप से 9.1.4. "कनेक्शन कैरेक्टर सेट और कोलाज" सर्वाधिक प्रासंगिक होगा।
इसे छोटा करने के लिए:MySQL को पता होना चाहिए कि कौन सा वर्ण सेट/आपके क्लाइंट एप्लिकेशन को एन्कोडिंग करता है (डेटाबेस पर्सेक्टिव से बात कर रहा है जो आपकी PHP स्क्रिप्ट है) उम्मीद कर रहा है क्योंकि यह सर्वर पर परिभाषित आंतरिक वर्ण सेट/एन्कोडिंग से सभी स्ट्रिंग डेटा ट्रांसकोड करेगा-, डेटाबेस-, तालिका- या कॉलम-स्तर कनेक्शन वर्ण सेट/एन्कोडिंग में। आप क्लाइंट साइड पर UTF-8 का उपयोग कर रहे हैं, इसलिए MySQL को बताना होगा कि आप UTF-8 का उपयोग करते हैं। यह MySQL कमांड SET NAMES 'utf8'
. द्वारा किया जाता है जिसे कनेक्शन खोलने पर पहली क्वेरी के रूप में भेजा जाना चाहिए। आपकी स्थापना और PHP स्क्रिप्ट में आपके द्वारा उपयोग की जाने वाली MySQL क्लाइंट लाइब्रेरी के आधार पर यह प्रत्येक कनेक्ट पर स्वचालित रूप से किया जा सकता है।
यदि आप पीडीओ का उपयोग करते हैं तो यह केवल कॉन्फ़िगरेशन पैरामीटर सेट करने की बात है
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
क्लाइंट कैरेक्टर सेट/एन्कोडिंग को बदलने के लिए mysqli का उपयोग करना और भी आसान है:
$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");
मुझे आशा है कि यह पूरी बात को और अधिक समझने योग्य बनाने में मदद करेगा।