字符集设置四个级别:服务器级,数据库级,表级,字段级
服务器级:
1.my.cnf 配置
[mysqld]
default-character-set=gbk
2.启动选项
mysqld --default-character-set=gbk
3.编译的时候
./configure --with-charset=gbk
修改字符集并不能将已有的数据按照新的字符集进行存放,所以不能通过修改数据库的字符集直接修改数据的内容
设置数据库字符集的规则:
1)如果指定了字符集和校对规则,则使用指定的字符集和校对规则;
2)如果指定了字符集没有指定校对规则,则使用指定字符集的默认校对规则;
3)如果没有指定字符集和校对规则,则使用服务器字符集和校对规则作为数据库的字符集和校对规则;
显示当前数据库使用的字符集和校对规则:
show variables like 'character_set_database';
show variables like 'collation_database';
表级:
create table xxx(
)engine=myisam default charset=utf8 collate=utf8_bin
修改表字符集:
将 latin1 转化为 gbk
1)导出表结构:
mysqldump --opt -uroot -p --default-character-set=gbk -d databasename > create.sql
2)手动修改 create.sql 中表结构定义中的字符集为新的字符集
3)确保记录不在更新,导出所有记录
mysqldump -uroot -p --quick --no-create-info --extented-insert --default-character-set=latin1 databasename> data.sql
4)打开 data.sql 将 set names latin1 修改成 set names gbk
5)使用新的字符集创建新的数据库
create database databasename default charset gbk;
6)创建表,执行 creat.sql
mysql -uroot -p databasename < create.sql
7)导入数据,执行 data.sql
mysql -uroot -p databasename < data.sql