IT技术博客大学习 共学习 共进步

修复 MySQL 编码问题

delphij's Chaos 2021-05-17 23:26:41 浏览 1,641 次

   有个疑似 OCD 患者最近抽风升级了一下 MySQL 数据库,然后发现 blog 里面全都变成了乱码。

   那乱码的模式一看就是把 utf8 直接扔进了 latin1 的数据库,一看 SHOW CREATE TABLE mt_entry 发现果然如此。

   略有些慌神,看了 MySQL 文档发现用 ALTER TABLE 的 CONVERT TO 硬来有点不太行好,遂想到可以试试看 mysqldump,于是做了:

   当作 latin1(不然会再按 utf8 编码一次):

   mysqldump mt_delphij --default-character-set=latin1 -r utf8.dump

   把里面的 CHARSET=latin1 替换为 CHARSET=utf8:

   sed -e s,CHARSET=latin1,CHARSET=utf8,g < utf8.dump > utf8.dump.edited

   删掉其中的 SET NAMES latin1。

   然后重新导入:

mysql -uroot -p --default-character-set=utf8 mt_delphijmysql> SET names utf8;mysql> SOURCE utf8.dump.edited;

   还好没用到 zfs rollback。

建议继续学习

  1. 字符编码和中文乱码小叙 (阅读 6,981)
  2. 中文编码杂谈 (阅读 6,180)
  3. Hadoop的map/reduce作业输入非UTF-8编码数据的处理原理 (阅读 5,542)
  4. PHP编码规范 (阅读 5,502)
  5. Linux screen窗口中文乱码问题 (阅读 5,282)
  6. Unicode与字符汉字相互转换 (阅读 5,121)
  7. UTF-8编码中BOM的检测与删除 (阅读 5,100)
  8. base64_encode 和 urlencode (阅读 5,060)
  9. python-django的中文编码总结 (阅读 4,941)
  10. JAVASCRIPT完美实现UTF8页面提交数据到GB2312 (阅读 4,780)