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

PHP中数据库UTF-8排序规则问题:迁移后重音及ñ字符显示异常

解决数据库迁移后重音/ñ字符显示异常及转换为UTF-8编码的步骤

1. 完整备份原数据库

执行导出命令时务必指定原数据库的字符集(假设原字符集为latin1,可根据实际情况调整):

mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > backup.sql

2. 修改备份的SQL文件

  • 打开backup.sql,全局替换所有表创建语句中的字符集配置:将CHARSET=latin1(或其他非UTF-8字符集)替换为CHARSET=utf8mb4
  • 找到文件开头的字符集设置语句,修改为:
    SET NAMES utf8mb4;
    SET CHARACTER SET utf8mb4;
    

3. 创建新的UTF-8编码数据库

登录MySQL控制台后执行:

CREATE DATABASE 新数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

4. 将修改后的SQL文件导入新数据库

执行导入命令时指定UTF-8字符集:

mysql -u 用户名 -p --default-character-set=utf8mb4 新数据库名 < backup.sql

5. 调整网站数据库连接的字符集配置

以PHP为例:

  • 若用mysqli,连接后添加:
    mysqli_set_charset($conn, 'utf8mb4');
    
  • 若用PDO,在DSN中添加字符集参数:
    $dsn = 'mysql:host=localhost;dbname=新数据库名;charset=utf8mb4';
    

关键注意事项

  • 优先使用utf8mb4而非utf8,因为utf8mb4支持完整的Unicode字符,兼容性更强
  • 若原数据库内容实际是UTF-8但被错误标记为latin1,直接转换可能导致二次乱码,需严格按照上述步骤,导出时指定原字符集、导入时指定目标字符集,让MySQL自动完成转码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:33:15