带有UTF8的mySQL转储无法导出正确的表情符号字符串 [英] mysqldump with utf8 can not export the right emojis string

查看:0
本文介绍了带有UTF8的mySQL转储无法导出正确的表情符号字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是MySQL5.5.29,utf8mb4字符集,有一个表USER包含一个值为十六进制F09F988EF09F988E的字段nickname,该字段可转换为表情符号😎😎。

现在打开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的昵称Display??

那么,如何使用UTF8导出正确的表情包字符串?


顺便说一句,数据库字符集环境配置如下: 显示类似‘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/'

推荐答案

谢谢Danack!
通过指定utf8mb4字符集并将mysqlump版本升级到5.5.3+,mysqlump&;MySQL可以很好地支持4个字节的emoji。

[tomcat@localhost ~]$ 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)

[tomcat@localhost ~]$ mysqldump --version
mysqldump  Ver 10.11 Distrib 5.0.95, for redhat-linux-gnu (x86_64)

将mysqlump升级到5.5.33后可以使用。

[tomcat@localhost ~]$ mysqldump --version
mysqldump  Ver 10.13 Distrib 5.5.33, for Linux (x86_64)

这篇关于带有UTF8的mySQL转储无法导出正确的表情符号字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆