आपके पास क्या है EXTRATERRESTRIAL ALIEN (U+1F47D)और BROKEN HEART (U+1F494)जो मूल बहुभाषी विमान में नहीं हैं। उन्हें जावा में एक चार के रूप में भी नहीं दिखाया जा सकता है "👽💔".length() == 4। वे निश्चित रूप से अशक्त पात्र नहीं हैं और यदि आप उन फोंट का उपयोग नहीं कर रहे हैं जो उनका समर्थन करते हैं तो एक वर्ग को देखेंगे।
MySQL utf8केवल मूल बहुभाषी विमान का समर्थन करता है, और आपको utf8mb4इसके बजाय उपयोग करने की आवश्यकता है :
एक पूरक चरित्र के लिए, utf8 चरित्र को बिल्कुल भी संग्रहीत नहीं कर सकता है, जबकि utf8mb4 को इसे संग्रहीत करने के लिए चार बाइट्स की आवश्यकता होती है। चूंकि utf8 चरित्र को बिल्कुल भी संग्रहीत नहीं कर सकता है, इसलिए आपके पास utf8 कॉलम में कोई भी अनुपूरक वर्ण नहीं हैं और आपको MySQL के पुराने संस्करणों से utf8 डेटा को अपग्रेड करते समय वर्ण परिवर्तित करने या डेटा खोने के बारे में चिंता करने की आवश्यकता नहीं है।
तो इन पात्रों का समर्थन करने के लिए, आपका MySQL 5.5+ होना चाहिए और आपको utf8mb4हर जगह उपयोग करने की आवश्यकता है। कनेक्शन एन्कोडिंग की जरूरत है utf8mb4, चरित्र सेट की आवश्यकता है utf8mb4और समतलीकरण की आवश्यकता है utf8mb4। जावा के लिए यह अभी भी है "utf-8", लेकिन MySQL को एक अंतर की आवश्यकता है।
मैं नहीं जानता कि आप किस ड्राइवर का उपयोग कर रहे हैं, लेकिन कनेक्शन सेटसेट को सेट करने के लिए ड्राइवर अज्ञेयवादी तरीका क्वेरी भेजने के लिए है:
SET NAMES 'utf8mb4'
संबंध बनाने के ठीक बाद।
कनेक्टर / J के लिए यह भी देखें :
14.14: मैं 4-बाइट UTF8, utf8mb4 को कनेक्टर / J के साथ कैसे उपयोग कर सकता हूं?
कनेक्टर / J के साथ 4-बाइट UTF8 का उपयोग करने के लिए mySQL सर्वर को character_set_server = utf8mb4 से कॉन्फ़िगर करें। कनेक्टर / J तब उस सेटिंग का उपयोग करेगा,
जब तक कि कनेक्शन स्ट्रिंग में वर्ण संकेतन सेट नहीं किया गया हो । यह वर्ण सेट के ऑटोडेटेक्शन के बराबर है।
अपने कॉलम और डेटाबेस को भी समायोजित करें:
var1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL
फिर, आपके MySQL संस्करण को utf8mb4 समर्थन के लिए अपेक्षाकृत अद्यतित होना चाहिए।