直接说干的 ,废话就不说了哈
1.将C:/Program Files/MySQL/MySQL Server 5.1/my.ini文件,改成这样:
主要是改里边的latin1改为gbk[mysqld]default-character-set=gbk[mysql.server]default-character-set=GBK
[mysql.server]user=mysqlbasedir="C:/Program Files/MySQL/MySQL Server 5.1/"default-character-set=gbk注意:就是加入了一句default-character-set=gbk,后面的[mysql.server]是要手动加进去的。
修改后重新启动mysql
查看系统的字符集用下面的命令:
1 mysql> SHOW VARIABLES LIKE 'character_set_%';
2 +--------------------------+-----------------------------------------+
3 | Variable_name | Value |
4 +--------------------------+-----------------------------------------+
5 | character_set_client |gbk |
6 | character_set_connection |gbk |
7 | character_set_database |gbk |
8 | character_set_filesystem | binary |
9 | character_set_results |gbk |
10 | character_set_server |gbk |
11 | character_set_system |utf8 |
12 | character_sets_dir | E:/usr/MySQL Server 5.0/share/charsets/ |
13 +--------------------------+-----------------------------------------+
14 8 rows in set (0.00 sec)
15
可以看到,我的这几个变量都是一致的。但如果不一致呢?网上许多教程告诉你“你set names下就解决了”。
那么set names是什么呢? set names实际上就是同时设置了 character_set_client ,character_set_connection和 character_set_results 这三个系统变量。
例如在mysql命令行上输入 set names 'gbk' 命令等同于:
SET character_set_client = gbk;
SET character_set_connection = gbk;
SET character_set_results = gbk;
SET character_set_server =gbk;
mysql> SHOW VARIABLES LIKE 'collation_%';+----------------------+-------------------+| Variable_name | Value |+----------------------+-------------------+| collation_connection | gbk|| collation_database | gbk|| collation_server |gbk |+----------------------+-------------------+3 rows in set (0.02 sec)
如果不是 用set names修改成一致的。
二、乱码解决方案要解决乱码问题,首先必须弄清楚数据库用什么编码。如果没有指明,将是默认的latin1。用得最多的应该是这3种字符集 gb2312,gbk,utf8。如何去指定数据库的字符集呢?下面也gbk为例【在MySQL Command Line Client创建数据库 】mysql> CREATE TABLE `mysqlcode` (-> `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,-> `content` VARCHAR( 255 ) NOT NULL-> ) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;Query OK, 0 rows affected, 1 warning (0.03 sec)mysql> desc mysqlcode;+---------+-----------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+---------+-----------------------+------+-----+---------+----------------+| id | tinyint(255) unsigned | NO | PRI | | auto_increment || content | varchar(255) | NO | | | |+---------+-----------------------+------+-----+---------+----------------+2 rows in set (0.02 sec)其中后面的TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;就是指定数据库的字符集,COLLATE (校勘),让mysql同时支持多种编码的数据库。当然也可以通过如下指令修改数据库的字符集alter database da_name default character set 'charset'
修改表
alter table 'tb_name default character set gbk COLLATE gbk_bin;
修改字段的编码:
alter table 'tb_name change 'tb_id' 'tb_id' varchar(20) character set gbk COLLATE gbk_bin NOT NULL;
显示表字段属性:
SHOW CREATE TABLE TB_NAME;
相关资源:敏捷开发V1.0.pptx