很多朋友在EXPORT/IMPORT data的时候,经常会遇到导出没问题,导入的时候中文全是乱码的情况,问题主要是出在编码上。create database的时候一般默认都是UTF-8或者LATIN1的编码格式,导出的时候一般都是UTF-8格式的,或者是数据库默认的编辑语言格式【可能是GB2312】,若您各个关节的charset都是gb2312的话,我想导入导出应该没问题【这基本是废话】,网上有很多方法来解决这个问题:比如利用mysqldump来动态的设置CHARSET,或者是在导出的sql最前面设置chartset 对于服务器数据导到本地测试,可以选择在本地先按照服务器端的charset创建一个db,然后再数据导入,应该不存在问题,这个时候需要把导出sql文件中的create database dbname修改为 create database if not exists dbname,然后进行import 若已经存在db,则可以在操作栏中进行对db的整理,把charset整理一下。
操作实例:
MySQL 4.0 数据导入到 MySQL 5.0 可能出现的问题,MySQL4.1 和 5.0 的字符设置比 4.0 复杂很多,详见: Character Set Support,utf-8 的中文数据从 4.0 导入到 5.0 之后,PHP 读取似乎没什么异常,但是在里面看到的中文却都是乱码。这是因为一般 MySQL 5.0 的默认的 character_set_database 为 latin1 ,导入后的数据的.
Collation 是 latin1_bin 或 latin1_swedish_ci 。这时候再用 phpMyAdmin 导出的数据也都是乱码,不能使用了。
我解决这个问题的方法是先将 phpMyAdmin 的 libraries/select_lang.lib.php 文件中的 MySQL charsets map 中的(在 phpMyAdmin 2.7.0-pl2 中是第 263 行):‘utf-8′ => ‘utf8′, 改为:‘utf-8′ => ‘latin1′,这样在 phpMyAdmin 里面就能正常显示 utf-8 的中文了。这样导出来的数据也就能用了。将导出来的 sql 文件中的 character set 和 collate 分别都设成 utf8 和 utf8_general_ci ,同时把数据库的 collation 也改成 utf8_general_ci ,然后重新导到 MySQL 5.0 ,再把之前修改过的 select_lang.lib.php 改回原样,这样 phpMyAdmin 中的乱码问题就彻底解决了。避免出现这个问题,只需在导入数据之前,先将数据库的 collation 设为 utf8_general_ci。PHP 连接 MySQL 5.0 数据库后,最好先执行以下几句,以免因为 collation 问题而出现各种难以预见的。
错误:
1. mysqldump –default-character-set=latin1 foobar > foobar.sql 这样就会得出一个编码正确的档
2.更改foobar.sql内中的 latin1 字段为 utf8 (replace all latin1 -> utf8)
3.转换此 sql 档为 unicode(方便直接转换为正确的utf8编码)
4.在 phpMyAdmin 中导入 foobar.sql, 或是在 SQL 直接贴上 foobar.sql 的内容4.0的没有字符集gbk,所有4.0并不认识字符集gbk,你可以试着用工具mysql migration toolkit来从4.0导到5.0;如果我没有记错的话,小蜜蜂所有的表类型好像都是myisam,把整个数据库打包,再放到5.0,重启5.0的mysql数据库,就可以了。
本人将服务器端mysql4.0 导出后导入到本地mysql5.0,看了服务器端的charset都是gb2312的,二期服务器端的admin版本比较低,这个没什么关系,将导出的sql保存在gb2312格式的文件,我这里是先手动建立了一个charset为gb2312的db,然后进行charset为gb2312的import没问题,同时对以下情况也进行了测试,修改sql文件设置chartset 执行导入 OK 。本来已经存在db,整理charset后进行差备导入 OK .
留言载入中 … 