首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容 对于使用者来说,一般推荐使用utf8编码来存储数据。而要解决乱码问题,不单单是MySQL数据的存储问题,还 1 -------客户端---- 2 [client] 3 no-beep 4 5 # pipe 6 # socket=mysql 7 port=3306 8 9 [mysql] 10 11 default-character-set=gb2312 12 13 -----服务器---- 14 15 # The default character set that will be used when a new schema or table is 16 # created and no character set is defined 17 character-set-server=gb2312 1.service mysqld stop,停用mysql。 2.cp /etc/my.cnf /etc/my.cnf.bak,修改前做备份,这是个好习惯。 修改my.cnf或my.ini(只有修改配置文件,并重启服务器,才能永久生效) 3.service mysqld restart,重启。 4.show variables like '%char%';查看。
以下为网络转载,比较全。 ////////////////////////////////////////// 查看mysql字符集MySQL 乱码的根源是的 MySQL 字符 1 show variables like 'collation_%'; 2 show variables like 'character_set_%'; 1 ---1.修改数据库字符集 2 alter database mini default character set = gb2312; 3 ----2.创建数据库设置字符集 4 create database mydb character set gb2312; 1 alter table pub_logs default character set = gb2312; 2 alter table pub_logs convert to character set gb2312; 1 SELECT a.TABLE_TYPE,CONCAT('alter TABLE ',A.TABLE_NAME,' default character set = gb2312;') FROM INFORMATION_SCHEMA.TABLES A 2 WHERE A.TABLE_SCHEMA='MINI' 3 AND a.TABLE_TYPE='BASE TABLE' 4 ; 1 SELECT CONCAT(CONCAT(CONCAT('alter TABLE ',c.TABLE_NAME,' modify'),CONCAT(' ',C.COLUMN_NAME,' '),C.COLUMN_TYPE),' ',' character set gb2312 COLLATE gb2312_chinese_ci;') AS CLOU 2 FROM 3 INFORMATION_SCHEMA.COLUMNS C,INFORMATION_SCHEMA.TABLES A 4 WHERE c.TABLE_SCHEMA='MINI' 5 AND A.TABLE_NAME=c.TABLE_NAME 6 AND A.TABLE_TYPE='BASE TABLE' 7 AND c.DATA_TYPE='varchar' 8 ; |