MySQL का utf8
वर्णसेट वास्तव में UTF-8 नहीं है , यह यूटीएफ -8 का एक सबसेट है जो केवल मूल विमान (यू + एफएफएफएफ तक के वर्ण) का समर्थन करता है। अधिकांश इमोजी U+FFFF से अधिक कोड बिंदुओं का उपयोग करते हैं। MySQL का utf8mb4
वास्तविक UTF-8 है जो उन सभी कोड बिंदुओं को एन्कोड कर सकता है। MySQL के बाहर "utf8mb4" जैसी कोई चीज़ नहीं है, बस UTF-8 है। तो:
दोबारा, "utf8mb4" जैसी कोई चीज़ नहीं। HTTP POST अनुरोध किसी भी कच्चे बाइट्स का समर्थन करते हैं, यदि आपका क्लाइंट UTF-8 एन्कोडेड डेटा भेजता है तो आप ठीक हैं।
हाँ।
भगवान नहीं, कच्चे UTF-8 का उपयोग करें (utf8mb4
) सभी के लिए जो पवित्र है।
खैर, आपकी समस्या है; MySQL के utf8
. के माध्यम से अपना डेटा प्रसारित करना वर्णसेट U+FFFF से ऊपर के किसी भी वर्ण को त्याग देगा। utf8mb4
. का उपयोग करें MySQL के माध्यम से सभी तरह।
आपको यह निर्दिष्ट करना होगा कि इसका वास्तव में क्या अर्थ है। PHP के JSON फ़ंक्शन किसी भी यूनिकोड कोड बिंदु को ठीक से संभालने में सक्षम होना चाहिए, जब तक कि यह मान्य UTF-8 है:
echo json_encode('😀');
"\ud83d\ude00"
echo json_decode('"\ud83d\ude00"');
😀