Skip to content

字符集 character

  • 字符 character 是各种文字和符号的总称
  • 字符编码 character code 是计算机针对各种符号,在计算机中的一种二进制存储代号
  • 字符集 character set 是多个字符的集合

常见的字符集

  • ASCII 字符集
  • GB2312 字符集
  • Unicode 字符集

设置客户端字符集

sql
-- 设置客户端字符集编码
set names gbk;

-- 查看字符集编码设置
show variables like 'character_set_%';
+--------------------------+------------+
| Variable_name            | Value      |
+---------+-----------------------------+
| character_set_client     | gbk        |
| character_set_connection | gbk        |
| character_set_database   | utf8mb4    |
| character_set_filesystem | binary     |
| character_set_results    | gbk        |
| character_set_server     | utf8mb4    |
| character_set_system     | utf8       |
| character_sets_dir       | /usr/local/Cellar/mysql/8.0.16/share/mysql/charsets/ |
+--------------------------+------------+

-- 插入中文字符
insert into tb_teacher (name, age) values ('张三', 23);

MySQL 与 MySQLd 之间有三层

  • 客户端传入数据给服务端 client
  • 服务端返回数据给客户端 server
  • 客户端与服务端之间的连接 collection

变量

  • character_set_client 客户端
  • character_set_connection 连接层
  • character_set_database 数据库
  • character_set_results 结果集

修改变量

sql
set 变量名 = 值;

-- 修改单个变量
set character_set_client = gbk;

-- 设置字符集
set names gbk;

-- 等价于
set character_set_client = gbk; // 让服务器识别客户端传过去的数据
set character_set_connection = gbk; // 更好的帮助客户端与服务器端之间惊醒字符集转换
set character_set_results = gbk; // 告诉客户端服务器返回的数据