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

MySQL数据库导入捷克语特殊字符(ě ř č ů)乱码问题咨询

解决latin1编码MySQL数据库迁移至UTF-8时的捷克语字符乱码问题

一、正确导出旧数据库(从latin1库生成无乱码的SQL文件)

旧库用latin1存储捷克语字符,导出时必须匹配原字符集再转成UTF-8:

  • 打开旧主机的phpMyAdmin,选中目标数据库
  • 切换到「导出」标签页,选择自定义导出模式
  • 在「字符集」设置区域:
    • 「数据库系统的字符集」选latin1(和旧库一致)
    • 「输出字符集」选utf8mb4(或utf8,推荐前者支持更全的Unicode字符)
  • 勾选「添加DROP TABLE / VIEW...语句」,避免导入时表冲突
  • 确认导出的SQL开头保留旧库的字符集声明,不要强行替换成utf8,然后导出保存SQL文件

二、正确导入到新主机的UTF-8库

新库先做好字符集配置,再导入:

  • 在新主机phpMyAdmin创建空数据库,字符集设为utf8mb4,排序规则选utf8mb4_czech_ci(专门适配捷克语,也可用utf8mb4_unicode_ci)
  • 进入「导入」标签页,选择刚才导出的SQL文件
  • 「字符集」下拉框选utf8mb4(和导出时的输出字符集一致)
  • 执行导入,完成后检查ě、ř、č、ů这些特殊字符是否正常显示

三、修复已导入的乱码数据

如果已经把乱码数据导入了新库,按以下步骤修复:

  1. 先把表临时转回latin1,还原原始编码:
ALTER TABLE bookings CONVERT TO CHARACTER SET latin1 COLLATE latin1_swedish_ci;
  1. 按照上面的正确导出步骤,重新导出数据(输出字符集选utf8mb4)
  2. 把表改回utf8mb4,再导入刚导出的正确SQL:
ALTER TABLE bookings CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_czech_ci;

关键注意点

  • 之前直接改表CHARSET为utf8能插入新字符,是因为新数据直接以utf8编码存储,但旧数据是latin1编码被错误解析成utf8,所以显示乱码
  • 网站代码的数据库连接要同步设置SET NAMES utf8mb4,确保后续读写数据的字符集一致,避免再次出现乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:55:24