我使用MySQL 5.5.29,utf8mb4字符集,有一个表用户包含一个nickname值为hex 的字段F09F988EF09F988E转换为表情符号.
现在打开MySQL控制台,并执行:
set names utf8mb4;
select nickname, hex(nickname) from user;
Run Code Online (Sandbox Code Playgroud)
nickname | hex(nickname)
---------+-----------------
| F09F988EF09F988E
Run Code Online (Sandbox Code Playgroud)
然后执行:
mysqldump --default-character-set=utf8 -utest -ptest test_dev user > user.sql
Run Code Online (Sandbox Code Playgroud)
检查user.sql并找到昵称显示??哪个十六进制字符串是3f
那么,mysqldump如何用UTF8导出正确的emojis字符串呢?
顺便说一句,数据库字符集环境配置如下:显示'character_set_%'之类的变量:
'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'
'character_sets_dir', '/data/mysql/share/charsets/'
Run Code Online (Sandbox Code Playgroud)