1.mysql 字符集有细致设置:(补充mysql编码方式)
2.mysql字符处理机制是:
数据库和客户端之间存在一个字符集转换器(后文简称转换器)将客户端字符编码(必须告诉服务端的)转换成一种中间编码的数据(可自定义的但保证转换不会丢失数据),
然后再转换成数据库定义的编码,取数据时,转换器将中间编码转换为需要的返回编码(可自定义)。
set names gbk这种修改是窗口级别的,只针对本窗口有效,打开另外一个窗口修改无效。
也可发现数据库底层的编码方式没有改变,插入数据后还是以utf8编码方式保持。
设置通知服务端客户端的字符编码类型:
查询当前使用的编码:
show variables like '%character%';
结果:
| Variable_name | Value | +--------------------------+---------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | G:ʵ | +--------------------------+---------+
查看校队集:
show variables like '%collation%';
结果:
| Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_general_ci | | collation_database | utf8_general_ci | | collation_server | utf8_general_ci | +----------------------+--------------------+
修改数据库编码:(这种方式修改编码注意校队集的匹配)
set character_set_database='utf8';
3.出现乱码和丢失的情况
其实上面的所说编码,包括编码和解码。
查询数据库系统支持的字符集种类:
4.校对集:对字符进行排序规则。一种字符集可有多种校对集。
4.1查看支持的校对集:
4.2定义校对集必须和字符集方式对应: