डेटा संग्रहण :
-
utf8mb4
निर्दिष्ट करें आपके डेटाबेस में सभी तालिकाओं और पाठ स्तंभों पर वर्ण सेट। यह MySQL को यूटीएफ -8 में मूल रूप से एन्कोड किए गए मानों को भौतिक रूप से संग्रहीत और पुनर्प्राप्त करता है। ध्यान दें कि MySQL परोक्ष रूप सेutf8mb4
. का उपयोग करेगा एन्कोडिंग अगर एकutf8mb4_*
संयोजन निर्दिष्ट है (बिना किसी स्पष्ट वर्ण सेट के)। -
MySQL के पुराने संस्करणों (<5.5.3) में, दुर्भाग्य से आपको केवल
utf8
का उपयोग करने के लिए मजबूर किया जाएगा , जो केवल यूनिकोड वर्णों के सबसेट का समर्थन करता है। काश मैं मजाक कर रहा होता।
डेटा एक्सेस :
-
आपके एप्लिकेशन कोड (जैसे PHP) में, आप जिस भी DB एक्सेस विधि का उपयोग करते हैं, आपको कनेक्शन वर्णसेट को
utf8mb4
पर सेट करना होगा। . इस तरह, MySQL अपने मूल UTF-8 से कोई रूपांतरण नहीं करता है जब यह आपके एप्लिकेशन को डेटा सौंपता है और इसके विपरीत। -
कुछ ड्राइवर कनेक्शन कैरेक्टर सेट को कॉन्फ़िगर करने के लिए अपना तंत्र प्रदान करते हैं, जो दोनों अपनी आंतरिक स्थिति को अपडेट करते हैं और कनेक्शन पर उपयोग किए जाने वाले एन्कोडिंग के MySQL को सूचित करते हैं-यह आमतौर पर पसंदीदा तरीका है। पीएचपी में:
-
यदि आप PDO का उपयोग कर रहे हैं PHP ≥ 5.3.6 के साथ अमूर्त परत, आप
charset
. निर्दिष्ट कर सकते हैं DSN में :$dbh = new PDO('mysql:charset=utf8mb4');
-
यदि आप mysqli का उपयोग कर रहे हैं , आप
set_charset()
पर कॉल कर सकते हैं :$mysqli->set_charset('utf8mb4'); // object oriented style mysqli_set_charset($link, 'utf8mb4'); // procedural style
-
अगर आप सादे mysql के साथ फंस गए हैं लेकिन PHP चल रहा हो 5.2.3, आप <पर कॉल कर सकते हैं कोड>mysql_set_charset ।
-
-
यदि ड्राइवर कनेक्शन वर्ण सेट सेट करने के लिए अपना तंत्र प्रदान नहीं करता है, तो आपको MySQL को यह बताने के लिए एक प्रश्न जारी करना पड़ सकता है कि आपका एप्लिकेशन कनेक्शन पर डेटा को एन्कोड किए जाने की अपेक्षा कैसे करता है:
सेट नाम 'utf8mb4'
। -
utf8mb4
. के संबंध में भी यही विचार /utf8
ऊपर के रूप में लागू होता है।
आउटपुट :
-
यदि आपका एप्लिकेशन टेक्स्ट को अन्य सिस्टम में ट्रांसमिट करता है, तो उन्हें भी कैरेक्टर एन्कोडिंग के बारे में सूचित करने की आवश्यकता होगी। वेब अनुप्रयोगों के साथ, ब्राउज़र को उस एन्कोडिंग के बारे में सूचित किया जाना चाहिए जिसमें डेटा भेजा जाता है (HTTP प्रतिक्रिया हेडर या HTML मेटाडेटा के माध्यम से )।
-
PHP में, आप
default_charset का उपयोग कर सकते हैं
php.ini विकल्प, या मैन्युअल रूप सेसामग्री-प्रकार
जारी करें MIME हेडर खुद है, जो सिर्फ अधिक काम है लेकिन इसका प्रभाव समान है। -
json_encode()
. का उपयोग करके आउटपुट को एन्कोड करते समय , जोड़ेंJSON_UNESCAPED_UNICODE
दूसरे पैरामीटर के रूप में।
इनपुट :
-
दुर्भाग्य से, आपको प्रत्येक प्राप्त स्ट्रिंग को मान्य UTF-8 के रूप में सत्यापित करना चाहिए, इससे पहले कि आप इसे संग्रहीत करने या इसे कहीं भी उपयोग करने का प्रयास करें। PHP का
mb_check_encoding()
चाल है, लेकिन आपको इसे धार्मिक रूप से उपयोग करना होगा। इसके लिए वास्तव में कोई रास्ता नहीं है, क्योंकि दुर्भावनापूर्ण क्लाइंट किसी भी एन्कोडिंग में डेटा जमा कर सकते हैं, और मुझे PHP को आपके लिए विश्वसनीय रूप से ऐसा करने के लिए कोई चाल नहीं मिली है। -
मेरे वर्तमान HTML spec के मेरे पढ़ने से , निम्नलिखित उप-बुलेट आधुनिक HTML के लिए अब आवश्यक या मान्य नहीं हैं। मेरी समझ यह है कि ब्राउज़र दस्तावेज़ के लिए निर्दिष्ट वर्ण सेट के साथ काम करेंगे और डेटा सबमिट करेंगे। हालांकि, यदि आप HTML के पुराने संस्करणों (XHTML, HTML4, आदि) को लक्षित कर रहे हैं, तो ये बिंदु अभी भी उपयोगी हो सकते हैं:
- केवल HTML5 से पहले के HTML के लिए :आप चाहते हैं कि ब्राउज़र द्वारा आपको भेजा गया सभी डेटा UTF-8 में हो। दुर्भाग्य से, यदि आप विश्वसनीय तरीके से ऐसा करने का एकमात्र तरीका अपनाते हैं तो
स्वीकृति-वर्णसेट
. जोड़ें आपके सभी. के लिए विशेषता टैग:
।
- केवल HTML5 से पहले के HTML के लिए :ध्यान दें कि W3C HTML स्पेक कहता है कि क्लाइंट को सर्वर पर फ़ॉर्म वापस भेजने के लिए डिफ़ॉल्ट रूप से "चाहिए" सर्वर ने जो भी वर्णसेट दिया है, लेकिन यह स्पष्ट रूप से केवल एक सिफारिश है, इसलिए प्रत्येक पर स्पष्ट होने की आवश्यकता है
- केवल HTML5 से पहले के HTML के लिए :आप चाहते हैं कि ब्राउज़र द्वारा आपको भेजा गया सभी डेटा UTF-8 में हो। दुर्भाग्य से, यदि आप विश्वसनीय तरीके से ऐसा करने का एकमात्र तरीका अपनाते हैं तो
अन्य कोड विचार :
-
स्पष्ट रूप से पर्याप्त, आपके द्वारा प्रस्तुत की जाने वाली सभी फ़ाइलें (PHP, HTML, JavaScript, आदि) मान्य UTF-8 में एन्कोडेड होनी चाहिए।
-
आपको यह सुनिश्चित करने की आवश्यकता है कि हर बार जब आप UTF-8 स्ट्रिंग को संसाधित करते हैं, तो आप इसे सुरक्षित रूप से करते हैं। यह, दुर्भाग्य से, कठिन हिस्सा है। आप शायद PHP के
mbstringका व्यापक उपयोग करना चाहेंगे। कोड>
विस्तार। -
PHP के अंतर्निर्मित स्ट्रिंग ऑपरेशन नहीं हैं डिफ़ॉल्ट रूप से UTF-8 सुरक्षित है। कुछ चीजें हैं जो आप सामान्य PHP स्ट्रिंग ऑपरेशंस (जैसे कॉन्सटेनेशन) के साथ सुरक्षित रूप से कर सकते हैं, लेकिन अधिकांश चीजों के लिए आपको समकक्ष
mbstring
का उपयोग करना चाहिए। समारोह। -
यह जानने के लिए कि आप क्या कर रहे हैं (पढ़ें:इसे गड़बड़ न करें), आपको वास्तव में यूटीएफ -8 को जानना होगा और यह न्यूनतम संभव स्तर पर कैसे काम करता है। utf8.com से कोई भी लिंक देखें। कुछ अच्छे संसाधनों के लिए वह सब कुछ सीखने के लिए जो आपको जानना आवश्यक है।