【发布时间】:2013-12-11 13:58:58
【问题描述】:
我正在使用 MySQL 5.5.29,utf8mb4 字符集,有一个表用户包含一个字段 nickname,其值为十六进制 F09F988EF09F988E,转换为表情符号????????。
现在打开 MySQL 控制台,然后执行:
set names utf8mb4;
select nickname, hex(nickname) from user;
nickname | hex(nickname)
---------+-----------------
???????? | F09F988EF09F988E
然后执行:
mysqldump --default-character-set=utf8 -utest -ptest test_dev user > user.sql
查看user.sql,找到昵称显示??,其中十六进制字符串为3f
那么,带 UTF8 的 mysqldump 如何导出正确的 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/'
【问题讨论】:
-
当 1) 将默认字符集更改为 "--default-character-set=utf8mb4" 2) 直接导出到文件时会发生什么情况,例如执行“mysqldump --default-character-set=utf8mb4 -utest -ptest test_dev user -r user.sql”
-
另外,您是否尝试过重新导入数据?可能只是您的编辑器正在显示问号,因为它的字体中没有可用的正确字符。
标签: mysql utf-8 character-encoding emoji