您的位置:首页 > 数据库 > MySQL

Mysql字符集乱码解决方案

2015-12-21 11:28 351 查看
主题思想就是系统,客户端,服务器端需要统一字符集:(中英文混合环境推荐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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Mysql