需要将MySQL数据库由latin1编码转换为utf8编码,网上搜了些方法都不管用。
自己多次摸索找出了一个可行方法:
0.下载工具Navicat for MySQL
1.将数据库的表结构导出 mysqldump -uuser -p -d db > db.sql
2.编辑db.sql,将latin1替换为utf8
3.新建一个新的数据库newdb,运行db.sql创建表
4.用Navicat for MySQL连接数据库,在要导出的数据库表上右键,选择导出向导。
4.1.选择XML文件(*.xml),下一步;
4.2.全选所有表,在导出到列中选择每个表导出的路径,点击高级,选择编码为1252 (ANSI - Latin I);
4.3.一直下一步,直到最后,点击开始。
5.用UE或NotePad++打开导出的xml文件,转换为UTF-8 无BOM编码格式。
6.对于每一个表,打开导入向导
6.1.选择XML文件(*.xml),下一步;
6.2.选择要导入的xml文件,下一步;
6.3.选择表示一个表行的标签为RECORD;
6.4.一直下一步,直到最后,点击开始。
整个转换过程完成,所以表数据正常转换,包括特殊符号和单引号。
注意:我有个表的格式为UTF8的,先用UTF8导出(4.2步中默认UTF8),不管怎么转换都是乱码。
后面才注意到,虽然表编码为UTF8,但是在网页程序中存储数据的时候都是用的默认编码latin1。
于是把它当做latin1导出,成功转换。
补注:其实网页代码不能转换,<a></a>会被XML转码。。。
解决方案:导出为sql文件,然后执行sql文件。