MySQL का utf8
एन्कोडिंग नहीं है वास्तविक यूटीएफ -8। यह एक एन्कोडिंग है जो यूटीएफ -8 की तरह है, लेकिन केवल यूटीएफ -8 का समर्थन करने वाले सबसेट का समर्थन करता है। utf8mb4
वास्तविक है यूटीएफ-8. यह अंतर एक आंतरिक कार्यान्वयन विवरण है MySQL का। दोनों PHP की तरफ UTF-8 की तरह दिखते हैं। क्या आप utf8
. का उपयोग करते हैं या utf8mb4
, PHP को दोनों ही मामलों में मान्य UTF-8 प्राप्त होगा।
आपको यह सुनिश्चित करने की आवश्यकता है कि कनेक्शन एन्कोडिंग PHP और MySQL के बीच utf8mb4
पर सेट है . अगर यह utf8
. पर सेट है , MySQL सभी वर्णों का समर्थन नहीं करेगा। आपने इस कनेक्शन एन्कोडिंग को mysql_set_charset()
. का उपयोग करके सेट किया है , पीडीओ charset
DSN कनेक्शन पैरामीटर या आपकी पसंद के डेटाबेस API के लिए जो भी अन्य विधि उपयुक्त है।
mb_internal_encoding
बस $encoding
. के लिए डिफ़ॉल्ट मान सेट करता है पैरामीटर सभी mb_*
कार्यों है। इसका MySQL से कोई लेना-देना नहीं है।
UTF-8 और UTF-32 वर्णों को एन्कोड करने के तरीके में भिन्न हैं। UTF-8 एक न्यूनतम . का उपयोग करता है किसी वर्ण के लिए 1 बाइट और अधिकतम 4. UTF-32 हमेशा प्रत्येक वर्ण के लिए 4 बाइट्स का उपयोग करता है। UTF-16 कम से कम 2 बाइट्स और अधिकतम 4 का उपयोग करता है।
इसकी परिवर्तनशील लंबाई के कारण, UTF-8 में थोड़ा सा ओवरहेड होता है। एक वर्ण जिसे UTF-16 में 2 बाइट्स में एन्कोड किया जा सकता है, UTF-8 में 3 या 4 ले सकता है; दूसरी ओर, UTF-16 कभी भी कम का उपयोग नहीं करता है 2 बाइट्स से। यदि आप बहुत सारे एशियाई पाठ संग्रहीत कर रहे हैं, तो UTF-16 कम संग्रहण का उपयोग कर सकता है। यदि आपका अधिकांश टेक्स्ट अंग्रेज़ी/ASCII है, तो UTF-8 कम संग्रहण का उपयोग करता है। UTF-32 हमेशा सबसे अधिक संग्रहण का उपयोग करता है।