带有UTF8的mySQL转储无法导出正确的表情符号字符串
- 作者: 你的背包100434106
- 来源: 51数据库
- 2022-10-19
问题描述
我使用的是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)
推荐阅读
热点文章
检查拆分键盘
0
带有“上一个"的工具栏和“下一个"用于键盘输入AccessoryView
0
Activity 启动时显示软键盘
0
UIWebView 键盘 - 摆脱“上一个/下一个/完成"酒吧
0
在 iOS7 中边缘滑动时,使键盘与 UIView 同步动画
0
我的 iOS 应用程序中的键盘在 iPhone 6 上太高了.如何在 XCode 中调整键盘的分辨率?
0
android:inputType="textEmailAddress";- '@' 键和 '.com' 键?
0
禁用 iPhone 中键盘的方向
0
Android 2.3 模拟器上的印地语键盘问题
0
keyDown 没有被调用
0
