分类: LINUX
2008-08-22 02:34:30
这是我之前用的转编码方法:
使用phpmyadmin打开后,是乱码,但是查询出来,页面显示是正常的。(mysql使用utf8编码,数据库也是utf8编码。)
前台页面使用的是默认编码 gb2312,链接数据库后,也没有使用 set names
既然页面正常,那就好办,先把数据查出来,然后改写成sql语句,把sql当作文件来保存。
sql语句被保存后,这个时候还不能用,先把sql文件打开,用editplus另存为 utf8 格式。
用phpmyadmin 新建一个相同结构的数据库(不包括数据)
再使用phpmyadmin,载入这个sql文件,直接运行。或者是把sql语句复制到phpmyadmin中运行也行(但是文件太大的时候就太慢了。)
之前一直用这个方法转换mysql 的编码 从Latin1 到 UTF8 ,这次有一个70多w条的数据库,要把数据的编码从latin1转换到utf8,没想到使用这个方法,随着记录的增多,数据的插入越来越慢。
当把新表的主键删掉后,速度有了明显的变化,但新的数据条数反而比原来的还要多,真实BT,找不到原因,只好放弃采用删除主键的办法。(主键和索引对mysql的插入、修改、删除速度有影响。)
问了一个朋友后,发现mysqldump 的时候加上-compatible=mysql40 参数,就可以指定编码了
mysqldump -uroot -proot -compatible=mysql40 -default-character-set=utf8 d5s_data > d5s.sql
mysqldump wy > wy2.sql 导出
mysql wy mysqldump --default-character-set=utf8 wy > wy1.sql