由于某种原因,我需要把数据从5.0版本导入到4.1.7版本中.已经加了mysql_query("SET NAMES UTF8");等,但还是乱码,请问各位高手有没有好的解决办法??那位高手能提供一些关于数据导入乱码问题的资料或信息,定不胜感激!!!再次感谢!

解决方案 »

  1.   

    试着先导出到txt,然后再导入
      

  2.   

    首先你要确保,5.0和4.1的字符集编码是一样的,可以用mysql>show variables like '%char%';来查看.
    方法有如下几种:
    1.直接使用mysqldump导出成backup.sql,如果两边的数据库的字符集不一致,这里就要加上参数default-character-set=utf8,即:c:\mysql\bin>mysqldump -u name -p --default-character-set=utf8 dbname>c:\backup.sql
    然后,再在目的数据库上c:\mysql\bin>mysql -u name -p<c:\backup.sql
    如果提示不行的话,你就用文本编辑器打开backup.sql,把提示有错的行都去掉.这里也可以用source命令来进行恢复.mysql>source 'c:/backup.sql';
    上面的过程也可以通过工具mysql administrator来进行,运行后找到备份与恢复的菜单就可以了,要注意的就是字符集的选择,那里会字符集给你选择.
    mysqldump的其它参数可以通过c:\mysql\bin>mysqldump --help来查看.2.用工具mysql migration toolkit来进行数据的转移,前提是要安装j2re才行,按照它提示的步骤进行就可以了,另外就是要注意字符集的选择和mysql数据库允许远程登录.3.在5.0上执行mysql>show create table tbname;得到表结构,再复制到4.1上执行.然后,执行mysql>select * into outfile 'c:/backup.txt' from tbname;导出数据到backup.txt这个文件,接着把backup.txt复制到4.1的服务器那里,用命令mysql>load data infile 'c:/backup.txt' into table tbname;这里的tbname就是刚才的建表语句建立的那个表.
    当然,select * into outfile 和load data infile这两个命令,还可以加上参数,fields enclosed by terminated by 和lines terminated by这些修饰符,更加详细的用法查看一下手册就可以了.4.如果都是myisam表类型的话,就可以直接打包后,复制过去,再解压就可以了.
      

  3.   

    4.1的编码如下:
    Variable_name  Value  
    character_set_client latin1 
    character_set_connection latin1 
    character_set_database latin1 
    character_set_results latin1 
    character_set_server latin1 
    character_set_system utf8 
    character_sets_dir /usr/share/mysql/charsets/ 
    5.0的编码如下:
    Variable_name  Value  
    character_set_client utf8 
    character_set_connection utf8 
    character_set_database latin1 
    character_set_filesystem binary 
    character_set_results utf8 
    character_set_server latin1 
    character_set_system utf8 
    character_sets_dir /usr/share/mysql/charsets/ 
    我不太懂,怎么样才能让他们编码一致????谢谢了!!
      

  4.   

    谢谢楼上的那么详细的介绍,可我对mysqldump不了解,不知道怎么使用的!请您指教!!谢谢~~
      

  5.   

    我把数据库和表都设为utf8的了,还是乱码呀!
      

  6.   

    楼上的hy2003fly() 您好,我试了您的第一种方法,导入后,在数据库中正确显示了,但在页面上是乱码,我已经加了mysql_query("SET NAMES UTF8");请问,怎么解决啊???谢谢了!!