2013-11-26 77 views
3

mysql 5.5.29,utf8mb4字符集,有一個表用戶包含字段暱稱,值爲十六進制F09F988EF09F988E即emojis。帶utf8的mysqldump無法導出正確的emojis字符串

現在打開mysql的控制檯,並執行:



集名稱utf8mb4;
從用戶選擇暱稱,十六進制(暱稱);


暱稱|十六進制(暱稱)
| F09F988EF09F988E


,然後執行mysqldump的--default-字符集= UTF8 -utest -ptest test_dev用戶> user.sql

檢查user.sql並找到暱稱顯示??其中十六進制字符串是3f

那麼,mysqldump如何用utf8導出正確的emojis字符串?


順便說一句,該數據庫字符集envionments配置如下: 顯示變量,如 'character_set_%': 'character_set_client字符', 'utf8mb4' '是character_set_connection', 'utf8mb4' 'character_set_database', 'utf8mb4' 'character_set_filesystem', '二進制' 'character_set_results', 'utf8mb4' '被character_set_server', 'utf8mb4' 'character_set_system', 'UTF8' 'character_sets_dir', '/數據/ MySQL的/共享/字符集/'

+2

時會發生什麼1)您更改默認字符集「--default字符集= utf8mb4」 2)您可以直接導出到文件如 執行「mysqldump --default-character-set = utf8mb4 -utest -ptest test_dev user -r user.sql」 – Danack

+0

另外,你有沒有嘗試重新導入數據?它可能只是因爲你的編輯器顯示的是問號,因爲它沒有正確的字體。 – Danack

回答

9

謝謝Danack!
通過指定utf8mb4字符集並將mysqldump版本升級到5.5.3+,mysqldump & mysql對於4個字節的emojis很適用。

[[email protected] ~]$ mysqldump --default-character-set=utf8mb4 -utest -ptest test_dev user > user.sql 

如果它顯示如下錯誤:

mysqldump: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file 

檢查mysqldump版本(mysqldump --version

[[email protected] ~]$ mysqldump --version 
mysqldump Ver 10.11 Distrib 5.0.95, for redhat-linux-gnu (x86_64) 

它可以升級到的mysqldump後,33年5月5日。

[[email protected] ~]$ mysqldump --version 
mysqldump Ver 10.13 Distrib 5.5.33, for Linux (x86_64) 
+2

相關:截至此日期,MySql Workbench中的導出工具將default-character-set選項硬編碼爲utf8 ... * sigh * .. –