दुर्भाग्य से, phpMyAdmin पहले php एप्लिकेशन में से एक है जो MySQL से चारसेट के बारे में सही ढंग से बात करता है। आपकी समस्या सबसे अधिक संभावना इस तथ्य के कारण है कि डेटाबेस सही UTF-8 स्ट्रिंग्स को पहले स्थान पर संग्रहीत नहीं करता है।
PhpMyAdmin में वर्णों को सही ढंग से प्रदर्शित करने के लिए, डेटा को डेटाबेस में सही ढंग से संग्रहीत किया जाना चाहिए। हालाँकि, डेटाबेस को सही चारसेट में बदलने से अक्सर वेब ऐप्स टूट जाते हैं जो MySQL द्वारा प्रदान की गई चारसेट-संबंधित सुविधा से अवगत नहीं होते हैं।
क्या मैं पूछ सकता हूँ:MySQL> संस्करण 4.1 है? डेटाबेस किस वेब ऐप के लिए है? phpBB? क्या डेटाबेस वेब ऐप के पुराने संस्करण या MySQL के पुराने संस्करण से माइग्रेट किया गया था?
मेरा सुझाव भाई को नहीं है यदि आप जिस वेब ऐप का उपयोग कर रहे हैं वह बहुत पुराना है और समर्थित नहीं है। डेटाबेस को वास्तविक UTF-8 में तभी बदलें जब आप सुनिश्चित हों कि वेब ऐप उन्हें सही ढंग से पढ़ सकता है।
संपादित करें:
आपका MySQL> 4.1 है, इसका मतलब है कि यह वर्णसेट-जागरूक है। आपके डेटाबेस के लिए वर्णसेट संयोजन सेटिंग्स क्या हैं? मुझे पूरा यकीन है कि आप latin1
. का उपयोग कर रहे हैं , जो कि ASCII के लिए MySQL नाम है, डेटाबेस में UTF-8 टेक्स्ट को 'बाइट्स' में स्टोर करने के लिए।
वर्णसेट-असंवेदनशील क्लाइंट (यानी mysql-cli और php-mod-mysql) के लिए, वर्ण सही ढंग से प्रदर्शित होते हैं क्योंकि उन्हें डेटाबेस से/बाइट्स के रूप में स्थानांतरित किया जा रहा है। PhpMyAdmin में, बाइट्स को ASCII वर्णों के रूप में पढ़ा और प्रदर्शित किया जाता है, जो आपको लगता है कि कचरा पाठ है।
अनगिनत घंटे पहले (2005?) बिताए गए थे, जब एशिया के कई हिस्सों में MySQL 4.0 अप्रचलित हो गया था। आपकी समस्या और घिसे-पिटे डेटा से निपटने का एक मानक तरीका है:
- अपने डेटाबेस का
.sql
के रूप में बैक अप लें - इसे UTF-8 सक्षम टेक्स्ट एडिटर में खोलें, सुनिश्चित करें कि वे सही दिखें।
charset collation latin1_general_ci
खोजें ,latin1
. को बदलें करने के लिएutf8
।- नई sql फ़ाइल के रूप में सहेजें, अपने बैकअप को अधिलेखित न करें
- नई फ़ाइल आयात करें, वे अब phpMyAdmin में ठीक से दिखाई देंगी, और आपके वेब ऐप पर जापानी प्रश्न चिह्न बन जाएंगे। यह सामान्य है।
- आपके php वेब ऐप के लिए जो php-mod-mysql पर निर्भर है,
mysql_query("SET NAMES UTF8");
डालेंmysql_connect()
. के बाद , अब प्रश्नवाचक चिन्ह हट जाएंगे। -
निम्न कॉन्फ़िगरेशन जोड़ें
my.ini
mysql-क्ली के लिए:# CLIENT SECTION [mysql] default-character-set=utf8 # SERVER SECTION [mysqld] default-character-set=utf8
MySQL पर चारसेट के बारे में अधिक जानकारी के लिए, कृपया मैनुअल देखें: http://dev.mysql.com/doc/refman/5.0/hi/charset-server.html
ध्यान दें कि मुझे लगता है कि आपका वेब ऐप डेटाबेस से कनेक्ट करने के लिए php-mod-mysql का उपयोग कर रहा है (इसलिए mysql_connect()
फ़ंक्शन), चूंकि php-mod-mysql एकमात्र एक्सटेंशन है जिसके बारे में मैं सोच सकता हूं कि अभी भी इस दिन समस्या को ट्रिगर करता है।
phpMyAdmin MySQL से कनेक्ट करने के लिए php-mod-mysqli का उपयोग करता है। मैंने कभी नहीं सीखा कि इसका उपयोग कैसे किया जाए क्योंकि मेरे PHP प्रोजेक्ट्स को विकसित करने के लिए चौखटे पर स्विच करें। मैं दृढ़ता से आपको ऐसा करने के लिए प्रोत्साहित करता हूं।
- कई ढांचे, उदा. CodeIgniter, Zend, डेटाबेस से कनेक्ट करने के लिए mysqli या pdo का उपयोग करें। mod-mysql फ़ंक्शंस को अप्रचलित कारण प्रदर्शन और स्केलेबिलिटी समस्या माना जाता है। साथ ही, आप अपने प्रोजेक्ट को किसी विशिष्ट प्रकार के डेटाबेस से नहीं जोड़ना चाहते हैं।