完美解决Mysql导入数据库中文乱码的问题
1 问题由来:博客从 WordPress 转向 Typecho
在由 WordPress 转向 Typecho 的过程中,主要难点是将 WordPress 中的文章和评论数据用 wordpress to typecho 插件剥离出来。经整理后再重新将文章转换为 markdown 格式发布到由ty搭建的本博客上,最后把评论导入到对应的文章下面,并对评论id重新排序。
2 本地编辑剥离出的文章和评论的.sql备份文件
通过插件把wordpress中文章和评论的数据转换成 typecho 形式的文章和评论数据,并导出为.sql备份文件。由于评论数据有1521条,对其id重新排序比较困难,所以博主将它们分拆为两个 .sql 文件(其中一个是utf-8格式的resultsql1.sql,另一个是gbk格式的resultsql2.sql)。
由于当时没注意文件格式,在把这两个sql文件上传到主机空间后,执行命令mysql -u typecodes -p typecodes</root/resultsql1.sql;
和mysql -u typecho -p typecho</root/resultsql2.sql;
。前者导入后,博客页面显示正常,但是文件2导入后,出现了乱码。原因是博客初始建数据库时,默认的编码格式是 utf-8 ,而导入的文件resultsql2.sql是 gbk 的格式,所以出现了乱码现象。
3 解决方法:
思路:先在本地数据库将gbk的格式 resultsql2.sql 转换成Unicode
格式,然后导入到本地数据库中,最后以utf-8的格式导出,再把导出的.sql文件导入到阿里云远程数据库中。这里用到了SQLog工具。
1、在本地电脑打开SQLog软件,然后建立本地数据库连接。
2、将gbk文件 resultsql2.sql 用记事本打开,然后选择“另存为”,在底部的编码一栏中选择第二项Unicode
。保存好后,再用记事本打开,然后复制所有内容;
3、把刚才复制的信息粘贴到下图框中,然后点击左上角的双箭头按钮,或者快捷键“Ctrl + F9”执行所有复制的语句。
4、执行完步骤3中所有的SQL语句成功,就可以在SQLog底部看到下图所示“信息”。这时点击SQLog左上角的“刷新”按钮。然后用phpmyadmin查看表 typecho_comments 中的中文是否还是乱码。很庆幸,显示正常了。
5、最后一个步骤,如果本地数据库中的表 typecho_comments 没有乱码,那么就将这个表导出为 utf-8 格式的 resultsql2.sql 文件,然后上传到阿里云远程主机上,再执行以下命令导入到博客数据库中就解决了。
###### 一定要和创建数据库时设置的编码utf8一致
[root@typecodes ~]# mysql -u typecodes -p typecodes < /root/resultsql2.sql -f --default-character-set=utf8;
Enter password: #输入用户typecode的密码然后回车
mysql> #然后就可以查看 typecho_comments 没有乱码的中文了
Comments »