默认是utf8,要改成gb2312,否则导进去乱码; 二是在linux下导入,这时候你需要先在库文件的头部加一行: SET NAMES 'gb2312'; 注意最后也是;号,别漏了。 然后执行mysql -u用户名 -p密码 xxx.sql > 库名 导入完成以后再用phpmyadmin打开看,里面的中文字就是正确的。 4.从mysql4.1里导出库文件 一.用phpmyadmin导出 导出倒是问题不大,如果phpmyadmin的浏览页面里显示的中文是正常的,那么导出肯定也是正常的 二.在linux上导出 如果用mysqldump导出出现了乱码也没有关系,可以运行iconv来转换一下 iconv -c -f UTF-8 -t GB2312 库文件名 > 新的gb2312的库文件名
综上所述,你要注意: 1。尽量在需要导入的库文件的开头加入SET NAMES 'gb2312';告诉mysql你要导入的是一个gb2312的文件; 2。可能你需要这个: SET NAMES 'utf8'; 在登陆到mysql后用,把character的一些默认参数改到utf8上,有时可以减少一些困扰,不过也不是必须的。 在mysql上使用: SHOW VARIABLES LIKE 'character_set_%'; 用来查看当前的状态。 3.如果出现乱码也不要怕,一是你要注意留存原有的备份,二是用iconv来进行转化。 在正常使用之前注意做导入导出的测试,确保万无一失。
最后加一句:www.quicklinux.org原创文章,转载请注明出处。呵呵 邮件:support@quicklinux.org 作者: MySQL 发布日期: 2005-12-14 我升级了MYSQL到4.1.2,phpmyadmin用的是2.6.2。数据表里面有中文的字段中文都变成了乱码,导出数据也是乱码。我用以前的2.5.7没有问题,想问一下,应该在phpmyadmin的那个文件里改哪个设置一下才能显示出来的是正常的中文字?
和字符相关的变量中这几个和sql很有关系: character_set_client character_set_connection character_set_results 此外就是数据库中对相应字段设置的charact set,如果没有对字段设置,缺省是table的charact set,table也没有指定则缺省使用database的。 上面3个变量的作用是这样的,client表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection则在客户端和数据库起一个连接作用。 具体是这样:比如我在mysql命令行设置client为gbk,connection为utf8,results为gbk,数据库为big5, 当我发送一个insert语句的时候,这个语句作为gbk代码,先转为utf8代码(connection),再转为big5(database)插入数据库。 而运行一个select语句的时候,从数据库得到的结果则相反的过程,由big5转为utf8,再转为gbk,你得到gbk的结果。 因此最主要的是让client和results和你使用的客户端一致。比如你的网页是utf8编码,你就要设置这两个为utf8。 而在mysql命令行的时候,我用的是2000,需要设置为gbk 而我们用的set names XXX,实际上就是同时设置这3个变量为XXX。 在这样的情况下,我们可以把一个数据库中的不同表或不同字段设为不同的字符集,只要上面3个设置正确,就可以在数据库中同时使用不同的字符集。 注意要保证你的数据库中的字符已经使用了正确的字符集,比如如果一开始你设置错误,插入数据后,本身数据的编码就是不正确的,然后即使设置改回来,也不可能得到正确的显示了。 还有一个是编码互相之间的兼容性,如果一个字符在gbk中有,在utf8中没有,那么在gbk-》utf8-》gbk的过程中,它就变成了“?” 再说一下具体解决的办法。 首先要指定你的升级后的database及table及field的character set,一般来说我们用gb
|