1、转载:Mysql 中文乱码的解决方法第一种方法,很精辟的总结:经常更换虚拟主机,而各个服务商的 MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:WINDOWS 下导入应该这样使用 MYSQL的命令在 DOS 命令下进入 mysql的 bin目录下,输入 mysql -uroot -p密码数据库名称 库名导入完成以后再用 phpmyadmin打开看,里面的中文字就是正确的。4.从 mysql4.1里导出库文件一.用 phpmyadmin导出导出倒是问题不大,如果 phpmyadmin的浏览页面里显示的中文是正常的,那么导出肯定也是正常的二.
2、在 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、_%;用来查看当前的状态。3.如果出现乱码也不要怕,一是你要注意留存原有的备份,二是用 iconv来进行转化。在正常使用之前注意做导入导出的测试,确保万无一失。最后加一句:www.quicklinux.org 原创文章,转载请注明出处。呵呵邮件:supportquicklinux.org 作者: MySQL 发布日期: 2005-12-14我升级了 MYSQL到 4.1.2,phpmyadmin 用的是 2.6.2。数据表里面有中文的字段中文都变成了乱码,导出数据也是乱码。我用以前的 2.5.7没有问题,想问一下,应该在 phpmyadmin的那个文件里改哪个设置一下才能显示出来的是正常的中文
4、字?和字符相关的变量中这几个和 sql很有关系:character_set_clientcharacter_set_connectioncharacter_set_results此外就是数据库中对相应字段设置的 charact set,如果没有对字段设置,缺省是 table的 charact set,table 也没有指定则缺省使用 database的。上面 3个变量的作用是这样的,client 表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection 则在客户端和数据库起一个连接作用。具体是这样:比如
5、我在 mysql命令行设置 client为 gbk,connection 为utf8,results 为 gbk,数据库为 big5,当我发送一个 insert语句的时候,这个语句作为 gbk代码,先转为 utf8代码(connection),再转为 big5(database)插入数据库。而运行一个 select语句的时候,从数据库得到的结果则相反的过程,由 big5转为 utf8,再转为 gbk,你得到 gbk的结果。因此最主要的是让 client和 results和你使用的客户端一致。比如你的网页是utf8编码,你就要设置这两个为 utf8。而在 mysql命令行的时候,我用的是 200
6、0,需要设置为 gbk而我们用的 set names XXX,实际上就是同时设置这 3个变量为 XXX。在这样的情况下,我们可以把一个数据库中的不同表或不同字段设为不同的字符集,只要上面 3个设置正确,就可以在数据库中同时使用不同的字符集。注意要保证你的数据库中的字符已经使用了正确的字符集,比如如果一开始你设置错误,插入数据后,本身数据的编码就是不正确的,然后即使设置改回来,也不可能得到正确的显示了。好了,随便弄了下,希望对你有所帮助Mysql中文乱码问题完美解决方案MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在 latin12.table的语系设定问
7、题(包含 character与 collation)3.客户端程式(例如 php)的连线语系设定问题强烈建议使用 utf8!utf8可以兼容世界上所有字符!一、避免创建数据库及表出现中文乱码和查看编码方法1、创建数据库的时候:CREATE DATABASE testCHARACTER SET utf8COLLATE utf8_general_ci;2、建表的时候 CREATE TABLE database_user (ID varchar(40) NOT NULL default ,UserID varchar(40) NOT NULL default ,) ENGINE=InnoDB DEF
8、AULT CHARSET=utf8;这 3个设置好了,基本就不会出问题了,即建库和建表时都使用相同的编码格式。但是如果你已经建了库和表可以通过以下方式进行查询。1.查看默认的编码格式:mysql show variables like “%char%“;+-+-+| Variable_name | Value |+-+-+| character_set_client | gbk | character_set_connection | gbk | character_set_database | utf8 | character_set_filesystem | binary | charac
9、ter_set_results | gbk | character_set_server | utf8 | character_set_system | utf8 |+-+-+注:以前 2个来确定,可以使用 set names utf8,set names gbk设置默认的编码格式;执行 SET NAMES utf8的效果等同于同时设定如下:SET character_set_client=utf8;SET character_set_connection=utf8;SET character_set_results=utf8;2.查看 test数据库的编码格式:mysql show crea
10、te database test;+-+-+| Database | Create Database |+-+-+| test | CREATE DATABASE test /*!40100 DEFAULT CHARACTER SET gbk */ |+-+-+3.查看 yjdb数据库的编码格式:mysql show create table yjdb;| yjdb | CREATE TABLE yjdb (sn int(5) NOT NULL AUTO_INCREMENT,type varchar(10) NOT NULL,brc varchar(6) NOT NULL,teller int
11、(6) NOT NULL,telname varchar(10) NOT NULL,date int(10) NOT NULL,count int(6) NOT NULL,back int(10) NOT NULL,PRIMARY KEY (sn),UNIQUE KEY sn (sn),UNIQUE KEY sn_2 (sn) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |二、避免导入数据有中文乱码的问题1:将数据编码格式保存为 utf-8设置默认编码为 utf8:set names utf8
12、;设置数据库 db_name默认为 utf8:ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;设置表 tb_name默认编码为 utf8:ALTER TABLE tb_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;导入:LOAD DATA LOCAL INFILE C:utf8.txt INTO TABLE yjdb;2:将数据编码格式保存为 ansi(即 GBK或 GB2312)设置默认编码为 gbk:set names gbk
13、;设置数据库 db_name默认编码为 gbk:ALTER DATABASE db_name DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;设置表 tb_name默认编码为 gbk:ALTER TABLE tb_name DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;导入:LOAD DATA LOCAL INFILE C:gbk.txt INTO TABLE yjdb;注:1.UTF8 不要导入 gbk,gbk 不要导入 UTF8;2.dos 下不支持 UTF8的显示 ;三、解决网页中乱码的
14、问题将网站编码设为 utf-8,这样可以兼容世界上所有字符。如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为 GBK, GBK 与 GB2312的区别就在于:GBK 能比 GB2312显示更多的字符,要显示简体码的繁体字,就只能用 GBK。1.编辑/etc/f ,在mysql段加入 default_character_set=utf8;2.在编写 Connection URL时,加上?useUnicode=true3.在网页代码中加上一个“set names utf8“或者“set names gbk“的指令,告诉MySQL连线内容都要使用utf8或者 gbk;