用mysqldump -uxxx -hxxxx -pxxx --compress --quick dbname |/bin/gzip >path/to/xxx.sql.gz备份了一个数据库
这个数据库以及所有表以及所有表字段的默认字符集都是gbk
然后在另外的机器上使用gunzip xxx.sql.gz
然后mysql dbname < xxx.sql 
结果发现数据库中出现乱码原始数据库为5.0.27
出现乱码的数据库为5.0.45请教达人,这个问题如何解决
两个数据库以及对应表的字符集都是一样的,问题应该不在这里。

解决方案 »

  1.   

    问题大概清楚了:
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    出现乱码的那个数据库.sql头没有上面的指令。
    但是奇怪的是,用同样的命令dumper,有些数据库的.sql文件加上了这些头,而有些则没有。
    巨大的文件编辑很浪费时间,请问如何强制mysqldumper加上这些头么?
    另外请达人稍微解释下这些头~
    谢谢
      

  2.   

    這些頭好像是MYSQL檢查版本的依據
      

  3.   

    问题解决了
    假设你的xxx.sql文件的编码为 yyy
    那么mysql xxx < xxx.sql之前先 set names yyy
    一切ok~~
    不用管原来数据库和现在数据库的字符集。
    当然如果从utf8到ascii之类的转换大概是不行的
      

  4.   

    xxx.sql文件的编码为 yyy 
    xxx.sql文件的编码,问一下 这是怎么回事?
      

  5.   

    我的 .sql确实是ANSI编码,但改成UTF-8编码还是不行啊?
      

  6.   

    我是初学者,我想请教下怎么知道自己sql文件的编码是什么啊?
      

  7.   


    怎么查看sql 文件 的编码   
    比如: 我sql 文件里面的 有一个创建数据库 default charaset =uft8
                          接着创建    表  表默认是 utf8
             为什么这样会出现 乱码?????、