mysql 乱码问题终结

xiaoxiao2024-05-05  23

直接说干的 ,废话就不说了哈

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
转载请注明原文地址: https://www.6miu.com/read-5015177.html

最新回复(0)