怎么导出包含 Emoji 表情的数据表_utf8mb4编码无损提取

云静小哥_1207

云静小哥_1207

2026-06-01

531人浏览

原创

MySQL导出含Emoji的CSV乱码,根本原因是连接层未全链路启用utf8mb4编码,需确保客户端、驱动、导出命令均显式指定utf8mb4,而非仅表字符集设为utf8mb4_unicode_ci。

MySQL 导出含 Emoji 的 CSV 时乱码?确认 utf8mb4 连接层全链路生效

emoji 存不进去或导出来是问号、方块,90% 是连接层没用 utf8mb4,不是表字符集设对了就行。表用 utf8mb4_unicode_ci 只是基础,mysql 客户端、连接驱动、导出命令三者都得显式指定编码。

  • mysqldump 必须加 --default-character-set=utf8mb4,否则默认走 utf8(即 utf8mb3),会静默截断四字节 Emoji
  • 如果用 SELECT ... INTO OUTFILE,语句前必须先执行 SET NAMES utf8mb4,否则导出文件用的是 session 默认编码
  • Python 的 pymysql 或 mysql-connector-python 需在 connect() 里传 charset='utf8mb4',光设 collation 不行
  • Navicat / DBeaver 等 GUI 工具要单独检查「连接属性→高级→字符集」是否为 utf8mb4,不能只信状态栏显示的“UTF-8”

用 mysqldump 导出带 Emoji 的 CSV:绕过 SQL 层直接生成文本

mysqldump 默认导 SQL,不适合直接当 CSV 用;但加几个参数就能输出制表符分隔、带引号、换行转义的类 CSV 格式,且保留 Emoji 完整性。

  • 命令模板:mysqldump --default-character-set=utf8mb4 -t -T /tmp/ --fields-enclosed-by='"' --fields-terminated-by='\t' --lines-terminated-by='\n' db_name table_name
  • 注意 -T 要求 MySQL 有 FILE 权限,且目标路径是 MySQL 服务端可写目录(不是你本地机器)
  • 导出的是 \t 分隔,Excel 打开需用「数据→从文本导入」并指定分隔符;若坚持用逗号,可用 sed 替换,但要注意字段内本身含逗号或换行的情况
  • 导出文件本身无 BOM,UTF-8 编码,Windows 记事本可能误判为 ANSI,建议用 VS Code 或 Notepad++ 查看验证

Python pandas + pymysql 导出 Emoji 安全 CSV:避开 to_csv 的默认编码陷阱

pandas 的 to_csv 默认用 utf-8 编码,看似没问题,但若数据从 MySQL 读出时已被截断(比如连接没设 utf8mb4),再怎么改导出编码都救不回。

codeflow
codeflow

一款AI工具,主要用于Codeflow 可将编码代理会话(例如 Claude Code、Codex、Gemini CLI 等)实时推流至 Discord 或 Telegram。适用于调用编码代理并希望……,适合需要提升相关任务效率的用户。

下载
  • 读取阶段最关键:用 pymysql.connect(charset='utf8mb4'),然后 pd.read_sql(..., con=conn),确保 DataFrame 里字符串对象原生含四字节码点
  • 导出时显式指定 encoding='utf-8-sig'(加 BOM 防 Excel 乱码)或 'utf-8'(更通用),别依赖默认值
  • 如果字段含换行符(\n)或双引号,to_csv 默认会加引号、转义,无需额外处理;但 Excel 对 \r\n 换行兼容更好,可加 line_terminator='\r\n'
  • 避免用 str.replace('?', 'smile') 这类手动替换——Emoji 是 Unicode 字符,不是字符串模式,替换会破坏原始码点

Excel 打开含 Emoji 的 CSV 显示异常?问题大概率不在导出环节

导出文件用 VS Code 看是正常的 Emoji,但 Excel 里变小方框或问号,基本可锁定是 Excel 自身限制或打开方式错误。

  • 不要双击 CSV 文件——这会让 Excel 用系统默认编码(通常是 GBK)读取 UTF-8 文件,必乱码;必须用「Excel → 数据 → 从文本/CSV → 浏览选中文件 → 编码选 UTF-8」
  • Excel for Windows 旧版本(2016 及以前)对 Emoji 渲染支持弱,即使编码正确也可能只显示占位符,这不是数据损坏,换 WPS 或在线版 Google Sheets 就能正常看
  • Mac 版 Excel 对 UTF-8 和 Emoji 兼容性好很多,但若字体不支持(比如用 Courier New),仍会显示为空心方块;可临时切换成 Apple Color Emoji 或 Segoe UI Emoji
  • 导出后用 file -i filename.csv 确认 MIME 类型是 text/plain; charset=utf-8,排除文件头被污染
事情说清了就结束。真正卡住人的,从来不是“能不能导”,而是哪一层悄悄退化成了 utf8。多查一次 SHOW VARIABLES LIKE 'character_set%',比重导十遍都管用。
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

2253

6

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.21

1379

5

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

795

5

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.19

3092

5

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.25

5248

4

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.08

1159

3

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.11

5491

4

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

2023.08.14

4822

7

mysql事务隔离级别
mysql事务隔离级别

mysql规范中定义了四种事务隔离级别,不同的隔离级别对事务的处理有所不同。本专题为大家提供mysql事务隔离级别相关的文章内容,大家可以免费体验。

2023.08.16

6394

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习