You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PhpMyAdmin中导出含emoji表情的数据库?

解决phpMyAdmin导出/导入时Emoji变???的问题

一、先试试phpMyAdmin自带的方法(不用写代码)

虽然导出选项里只显示UTF-8,但只要设置到位,照样能导出支持utf8mb4(包含Emoji)的内容:

  • 先确认数据库/表的字符集
    检查你的数据库和目标表是不是utf8mb4字符集,排序规则选utf8mb4_unicode_ci或者utf8mb4_general_ci。如果不是,进phpMyAdmin对应表的「操作」标签,直接修改表的字符集和排序规则。

  • 导出时的关键设置

    1. 选「自定义」导出模式,别用快速导出。
    2. 「格式特定选项」里字符集选UTF-8,记得勾选「添加DROP TABLE / VIEW / PROCEDURE...语句」,这样导入时能重建表结构,避免字符集不兼容。
    3. 展开「输出」部分,勾选「保存文件」,字符集保持UTF-8。
    4. 重点:在「SQL选项」里找「CREATE TABLE选项」,手动添加CHARSET=utf8mb4;如果是默认的CREATE TABLE模板,导出后可以手动把里面的DEFAULT CHARSET=utf8改成DEFAULT CHARSET=utf8mb4。
  • 导入时的设置

    1. 导入前先确认目标数据库是utf8mb4字符集。
    2. 导入选「自定义」模式,字符集选UTF-8,「SQL执行选项」里勾上「允许中断的导入」,确保完整UTF-8支持。
    3. 导入完检查下表的字符集,要是不对就手动改回去。

二、实在不行就自己写PHP导出函数

如果上面的方法不管用,那就自己写个PHP脚本导出,核心是全程用utf8mb4连接数据库:

第一步:用utf8mb4连接数据库

$host = 'localhost';
$dbname = '你的数据库名';
$username = '你的用户名';
$password = '你的密码';

// PDO连接必须指定utf8mb4
try {
    $pdo = new PDO(
        "mysql:host=$host;dbname=$dbname;charset=utf8mb4",
        $username,
        $password,
        [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]
    );
} catch (PDOException $e) {
    die("连接失败: " . $e->getMessage());
}

第二步:导出表结构和数据

// 获取所有表名
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
$exportContent = "-- 数据库导出(支持Emoji)\n-- 导出时间: " . date('Y-m-d H:i:s') . "\n\n";

foreach ($tables as $table) {
    // 导出表结构,替换成utf8mb4
    $createTable = $pdo->query("SHOW CREATE TABLE `$table`")->fetch(PDO::FETCH_ASSOC);
    $createSql = str_replace('DEFAULT CHARSET=utf8', 'DEFAULT CHARSET=utf8mb4', $createTable['Create Table']);
    $exportContent .= $createSql . ";\n\n";

    // 导出表数据
    $rows = $pdo->query("SELECT * FROM `$table`")->fetchAll();
    if (!empty($rows)) {
        $columns = array_keys($rows[0]);
        $columnNames = implode('`, `', $columns);
        $exportContent .= "INSERT INTO `$table` (`$columnNames`) VALUES\n";

        $valuesArr = [];
        foreach ($rows as $row) {
            $values = [];
            foreach ($row as $value) {
                if ($value === null) {
                    $values[] = 'NULL';
                } else {
                    // 用PDO的quote方法转义,保证utf8mb4兼容
                    $values[] = $pdo->quote($value);
                }
            }
            $valuesArr[] = '(' . implode(', ', $values) . ')';
        }
        $exportContent .= implode(",\n", $valuesArr) . ";\n\n";
    }
}

// 生成下载文件
$filename = $dbname . '_export_' . date('YmdHis') . '.sql';
header('Content-Type: text/plain; charset=utf-8');
header('Content-Disposition: attachment; filename="' . $filename . '"');
echo $exportContent;
exit;

注意点

  • 这个脚本需要PHP启用PDO扩展,而且数据库账号要有SELECT权限。
  • 导出的SQL文件直接在phpMyAdmin导入就行,导入时记得目标数据库/表是utf8mb4字符集。

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:17:15