一、查看character_set 变量
show variables like '%char%';
讯享网
二、对8个变量解释
| 变量名 | 解释 |
| character_set_client | 主要用来设置客户端使用的字符集。 |
| character_set_connection | 主要用来设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置。 |
| character_set_database | 主要用来设置默认创建数据库的编码格式,如果在创建数据库时没有设置编码格式,就按照这个格式设置。 |
| character_set_filesystem | 文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的。 |
| character_set_results | 数据库给客户端返回时使用的编码格式,如果没有指明,使用服务器默认的编码格式。 |
| character_set_server | 服务器安装时指定的默认编码格式,这个变量建议由系统自己管理,不要人为定义。 |
| character_set_system | 数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式。 |
| character_sets_dir | 这个变量是字符集安装的目录。 |
以上这些参数如何起作用:
1.库、表、列字符集的由来
①建库时,若未明确指定字符集,则采用character_set_server指定的字符集。
②建表时,若未明确指定字符集,则采用当前库所采用的字符集。
③新增时,修改表字段时,若未明确指定字符集,则采用当前表所采用的字符集。
2.更新、查询涉及到得字符集变量
更新流程字符集转换过程:character_set_client-->character_set_connection-->表字符集。

查询流程字符集转换过程:表字符集-->character_set_result
3.character_set_database
当前默认数据库的字符集,比如执行use xxx后,当前数据库变为xxx,若xxx的字符集为utf8,那么此变量值就变为utf8(供系统设置,无需人工设置)。
三、更改上述字符集
讯享网set character_set_XXX = “utf8”;
//xxx:是变量名,选择自己需要修改的补充。
四、MySQL字符编码转换原理
mysql Server收到请求时将请求数据从 character_set_client 转换为 character_set_connection
进行内部操作前将请求数据从 character_set_connection 转换为内部操作字符集,步骤如下
A. 使用每个数据字段的 CHARACTER SET 设定值;
B. 若上述值不存在,则使用对应数据表的字符集设定值
C. 若上述值不存在,则使用对应数据库的字符集设定值;
D. 若上述值不存在,则使用 character_set_server 设定值。
最后将操作结果从内部操作字符集转换为 character_set_results

友情参考:MySQL之字符集-校对规则

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/35813.html