主题思想就是系统,客户端,服务器端需要统一字符集:(中英文混合环境推荐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