主题思想就是系统,客户端,服务器端需要统一字符集:(中英文混合环境推荐utf8

1,修改系统字符集:

#vim /etc/sysconfig/i18n
LANG=”zh_CN.utf8”

2,修改my.cnf

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8 适合5.5
default-character-set=utf8  适合5.1

3,重启数据库

#mysqladmin –uroot –p’abc-123’ shutdown
#/etc/init.d/mysqld start

4,查看生效的字符集:

#show varliables like ‘character_set%’

5,创建库表的时候带上字符集设置:

mysql>create database student default characterset utf8 collate utf8_general_ci;
create tables info(
id int(4) auto_increment ,
name var(20) not null,
sex tinyint(1) not null default 0,
primary key(id),
idx index_name(name)
)engine=innodb default charset=utf8

6,在操作数据库的时候如果碰到临时生效字符集

mysql>set names utf8;

7,生产环境中更改字符集的方法

mysql>alter database student charset *;  alter table info character set *;

这条命令之后对后创建的表内数据生效,不会修改之前的数据类型,解决办法就是到处厡数据的表内数据,然后重新创建想要的字符集库,然后导入。

8,导入导出数据的数据完整无乱码:

导出:

myisam

#mysqldump –uroot –p’abc-123’ –A –B  --quick –F –events \
--flush-privileges –x –master-data=1 --default-character-set=gbk|gzip>/opt/all_bak.sql.gz

innodb:

#mysqldump -uroot -p'abc-123' -A -B -F--quick --events --flush-privileges --single-transaction --master-data=1--default-character-set=utf8|gzip >/opt/all_bak.sql.gz

导入:

#gunzip /opt/all_bak.sql.gz
#vim all_bak.sql 修改set namesgbk为utf8
#mysql –uroot –p’abc-123 <all_bak.sql