1.查看字符集编码设置
show variables like '%character%';
2.设置字符集编码
set names 'utf8';
相当于同时:
set character_set_client = utf8; set character_set_results = utf8; set character_set_connection = utf8;
3、创建数据库并设置字符集编码和核对。
CREATE DATABASE IF NOT EXISTS <dbName> DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
在默认情况下:
数据库服务器编码->数据库编码->数据表编码->字段编码
因此,后面的创建是数据表、字段默认都会以数据库字符集进行编码。
4、修改数据库的字符集 编码/核对
ALTER DATABASE <dbName> CHARACTER SET utf8 COLLATE utf8_general_ci;
修改后的编码只对后面创建表默认编码有影响,对现有的表没有作用。
5、修改数据表的字符集 编码/核对
SHOW FULL COLUMNS FROM <tableName>;
# 查看collation类型
5.1 只修改表的字符集,影响后续该表新增列的默认定义,已有列的字符集不受影响。
alter table <tableName> character set utf8
5.2 修改表的字符集和已有列字符集,并将已有数据进行字符集编码转换
alter table <tableName> convert to character set utf8 collate utf8_unicode_ci;
6、核对和字符集的关系
校对规则特征:
①两个不同的字符集不能有相同的校对规则;
②每个字符集有一个默认校对规则;
③存在校对规则命名约定:以其相关的字符集名开始,中间包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。
注意:
系统使用utf8字符集,若使用utf8_bin校对规则执行SQL查询时区分大小写,使用utf8_general_ci不区分大小写(默认的utf8字符集对应的校对规则是utf8_general_ci)。
7、修改字符集编码时,不设置核对时,系统会自动设置默认核对,默认核对是不区分大小写。
如果不设置核对,会根据字符集编码设置默认的核对
ALTER DATABASE <dbName> CHARACTER SET utf8 COLLATE utf8_general_ci;
等价于
ALTER DATABASE <dbName> CHARACTER SET utf8;
参考文档:https://www.cnblogs.com/geaozhang/p/6724393.html?utm_source=itdadao&utm_medium=referral