MySQL字符集及配置

一、什么是字符集

是多个字符(英文字符,汉字字符,或者其他国家语言字符)的集合,字符集种类较多,每个字符集包含的字符个数不同。
特点:
  ①字符编码方式是用一个或多个字节表示字符集中的一个字符;
  ②每种字符集都有自己特有的编码方式,因此同一个字符,在不同字符集的编码方式下,会产生不同的二进制。
即数据库的编码方式。

二、字符集的作用是什么

限定mysql的编码,处理乱码情况
MySQL要求对8种场景设置字符集,如图所示
在这里插入图片描述
character_set_client:代表客户端字符集,客户端最简单的来说,就是上图中的命令行,或者其它操作数据库的网页、应用等等,客户端字符集代表了用户的输入的字符的编码。
character_set_connection:代表与是数据库连接层的字符集。
character_set_databases:数据库采用的字符集。
character_set_filesystem:文件采用的字符集,一定是二进制最适合。
character_set_result:结果字符集,返回结果时采用的字符集。
character_set_server:mysql服务器采用的字符集,也就是操作默认的字符集。
character_set_system:系统字符集,比如我们输入的命令“insert…"这些语句字符串采用的字符集
character_sets_dir:可以使用的字符集的文件路径
在这里插入图片描述
字符集的转换流程:

  1. 客户端请求数据库数据,发送的数据使用character_set_client字符集
  2. MySQL实例收到客户端发送的数据后,将其转换为character_set_connection字符集
  3. 进行内部操作时,将数据字符集转换为内部操作字符集:
    使用每个数据字段的character set设定值
    若不存在,使用对应数据表的default character set设定值
    若不存在,使用对应数据库的default character set设定值
    若不存在,使用character_set_server设定值
  4. 将操作结果值从内部操作字符集转换为character_set_results

注意
在创建时未设置字符集的情况下,当前创建的内容会根据上一级的字符集来确定字符集,比如创建数据库未指定字符集,则会采用server的字符集来作为库的字符集,创建数据库时未指定字符集,则会采用数据库的字符集来做为表的字符集。以此类推,从下到上为:记录<表<库<服务器。

三、如何设置字符集

将字符集统一为utf8可以有效解决乱码请况

1. 查看MySQL的字符集

在这里插入图片描述

2. 修改my.ini文件,添加以下语句

[client]代表客户端默认设置内容
[mysql]代表我们使用mysql命令登录mysql数据库时的默认设置
[mysqld]代表数据库自身的默认设置

[mysql]
    #在该区域设置默认字符集(default-character-set=utf8),
    #那么这三个**character_set_client,character_set_connection,character_set_results**,全部生效
    default-character-set=utf8
    
[mysqld]
    #在该区域设置默认字符集(default-character-set=utf8),
    #那么**character_set_server,character_set_database**两个全部生效,并且这俩个参数只有在该节中可以设置,其他地方设置会报错
    default-character-set=utf8

[client]
    #在该区域设置默认字符集(default-character-set=utf8),
    #那么这个三个**character_set_client,character_set_connection,character_set_results**,全部生效
    #如果**在[mysql]和[client]节中都设置了默认字符集,那么以[client]为准**
    default-character-set=utf8

推荐设置:
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值