我想將表情符號保存到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創建的數據庫,並通過mysql外殼創建表:
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中鍵入select *,則可以在Mysql shell中正確地看到emoji圖標;但是,有任何想法嗎?
有人可以幫忙嗎?
感謝
您確定您的客戶端(phpMyAdmin)實際使用utf8mb4字符集連接到服務器嗎?在phpMyAdmin中重複上述查詢 –
嗨,米歇爾,感謝您的提醒,我想到了,我的myphpadmin實際上仍在使用utf8,這就是爲什麼我無法在phpmyadmin客戶端上看到它,但能夠在MySQL shell中看到它。但是,我在這裏有一個新問題。請閱讀這篇文章:http://stackoverflow.com/questions/14488503/ios-cannot-decode-emoji-unicode-in-json-format-correctly-and-emoji-icons-are-di – user2002692