服务器编码:

实验内容
初始的表为utf8编码,修改数据库,表,字段的字符集为GBK,查看效果。
数据初始化:
-
create table t (name varchar(20),content varchar(20));
-
insert into t values('测','测');
-
commit;
-
select hex(name),hex(content) from t;
1.设置数据库编码为GBK,查看表是否有影响

查看t表没有任何影响

但是新建的表如果没有指定字符集,会沿用数据库的默认字符集

也就是说修改数据库的默认字符集,对原有的表没有作用
仅针对新建且没有指定字符集的表有作用。
2.设置表的默认字符集为GBK(实验之前,还原数据库的默认字符集编码为utf8)

可以看到修改表的默认字符集,不会影响原有的数据
虽然表的默认字符集修改为了GBK,但是所有的字段都沿用了utf8编码。
如果新建字段,会默认为GBK编码

3.转换表的字符集
这个效果应该符合大多数场景的预期

4.修改字段的字符集

附常用命令,转载自
http://fatkun.com/2011/05/mysql-alter-charset.html
修改数据库字符集:
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
|
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...] 如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
|
只是修改表的默认字符集:
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
|
修改字段的字符集:
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
|
查看数据库编码:
SHOW CREATE DATABASE db_name;
|
查看表编码:
SHOW CREATE TABLE tbl_name;
|
查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-1285916/
,如需转载,请注明出处,否则将追究法律责任。