2013-01-23 3 views
6

मैं इमोजी को MySQL डेटाबेस में सहेजना चाहता हूं, और मुझे एहसास है कि तीन बाइट्स इमोजी डेटाबेस में सही ढंग से सहेजा गया है, लेकिन 4 बाइट इमोजी को प्रश्न चिह्न के रूप में सहेजा गया है। ऐसा लगता है जैसे मैंने utf8 को utf8mb4 में पूरी तरह से परिवर्तित किया है, लेकिन मुझे नहीं पता कि वास्तव में क्या गुम है। मेरे MySQL संस्करण 5.5.29 है, जब मैं MySql खोल में एक SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; करते हैं, तो निम्न बातें पता चलता है:phpMyAdmin mysql ने इमोजी को प्रश्न चिह्न के रूप में सहेजा

+--------------------------+--------------------+ 
| Variable_name   | Value    | 
+--------------------------+--------------------+ 
| character_set_client  | utf8mb4   | 
| character_set_connection | utf8mb4   | 
| character_set_database | utf8mb4   | 
| character_set_filesystem | binary    | 
| character_set_results | utf8mb4   | 
| character_set_server  | utf8mb4   | 
| character_set_system  | utf8    | 
| collation_connection  | utf8mb4_unicode_ci | 
| collation_database  | utf8mb4_unicode_ci | 
| collation_server   | utf8mb4_unicode_ci | 
+--------------------------+--------------------+ 

अब, परीक्षण के लिए, मैं सिर्फ इमोजी बचत परीक्षण करने के लिए बनाया 1 टेबल के साथ 1 डेटाबेस की है। मैं phpMyAdmin के माध्यम से डेटाबेस बनाया, एवं माई SQL खोल के माध्यम से तालिका बनाया:

CREATE TABLE `test_emojis` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 

और यह अभी भी काम नहीं करता है (अब भी निशान सवाल)।

हालांकि, मुझे कुछ दिलचस्प मिला, मुझे phpMyAdmin में प्रश्न चिह्न दिखाई देते हैं, लेकिन अगर मैं test_emoji से * टाइप टाइप करता हूं तो मैं माईएसक्ल खोल में इमोजी आइकन ठीक से देख सकता हूं; कोई विचार?

क्या कोई मदद कर सकता है?

धन्यवाद

+0

क्या आप सुनिश्चित हैं कि आपका क्लाइंट (phpMyAdmin) वास्तव में utf8mb4 charset का उपयोग कर सर्वर से कनेक्ट हो? अपनी उपरोक्त क्वेरी को phpMyAdmin –

+1

के भीतर से दोहराएं हाय, मिशेल, आपकी याद दिलाने के लिए धन्यवाद, मैंने यह भी पाया कि मेरा मायफैडमिन वास्तव में अभी भी utf8 का उपयोग कर रहा है, इसलिए मैं इसे phpmyadmin क्लाइंट पर नहीं देख पा रहा हूं, लेकिन इसे MySQL खोल पर देख सकता हूं । हालांकि, मेरे यहां एक नया सवाल है। कृपया इस पोस्ट को पढ़ें: http://stackoverflow.com/questions/14488503/ios-cannot-decode-emoji-unicode-in-json-format-correctly-and-emoji-icons-are-di – user2002692

उत्तर

3

phpMyAdmin utf8 चारसेट hardcoded गया है ताकि आप इसे इसे बदलने के लिए कोड है संपादित करने के लिए होगा। भविष्य के संस्करणों के लिए यह fb30c14 में तय किया गया है (यह आपको यह भी दिखाता है कि इन मानों को कहां बदलना है)।

2

अपने phpMyAdmin को> = 4.3.9 और समस्या हल करने के लिए अपग्रेड करें।

संबंधित मुद्दे