第3章 【MySQL】字符集和比较规则
3.1 字符集和比较规则简介
3.1.1 字符集简介
如何存储字符串?需要建立字符与二进制数据的映射关系。建立这个关系需要:
1.把哪些字符映射成二进制数据?
2.怎么映射?
将一个字符映射成一个二进制数据的过程也叫做 编码 ,将一个二进制数据映射到一个字符的过程叫做 解码 。
人们抽象出一个 字符集 的概念来描述某个字符范围的编码规则。比方说我们来自定义一个名称为 xiaohaizi 的字符集,它包含的字符范围和编码规则如下:
包含字符 'a' 、 'b' 、 'A' 、 'B' 。
编码规则如下:
采用1个字节编码一个字符的形式,字符和字节的映射关系如下:
'a' -> 00000001 (十六进制:0x01)
'b' -> 00000010 (十六进制:0x02)
'A' -> 00000011 (十六进制:0x03)
'B' -> 00000100 (十六进制:0x04)
有了 xiaohaizi 字符集,我们就可以用二进制形式表示一些字符串了,下边是一些字符串用 xiaohaizi 字符集编码后的二进制表示:
'bA' -> 0000001000000011 (十六进制:0x0203)
'baB' -> 000000100000000100000100 (十六进制:0x020104)
'cd' -> 无法表示,字符集xiaohaizi不包含字符'c'和'd'
3.1.2 比较规则简介
比较规则如下:
1.将两个大小写不同的字符全都转为大写或者小写
2.再比较这两个字符对应的二进制数据。
同一种字符集可以有多种比较规则。
3.1.3 一些重要的字符集
ASCII 字符集
共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码,我们看一些字符的编码方式:
'L' -> 01001100(十六进制:0x4C,十进制:76)
'M' -> 01001101(十六进制:0x4D,十进制:77)
ISO 8859-1 字符集
共收录256个字符,是在 ASCII 字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字节来进行编码。这个字符集也有一个别名 latin1 。
GB2312 字符集
收录了汉字以及拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母。其中收录汉字6763个,其他文字符号682个。同时这种字符集又兼容 ASCII 字符集,所以在编码方式上显得有些奇怪:
如果该字符在 ASCII 字符集中,则采用1字节编码。
否则采用2字节编码。
GBK 字符集
GBK 字符集只是在收录字符范围上对 GB2312 字符集作了扩充,编码方式上兼容 GB2312 。
utf8 字符集
收录地球上能想到的所有字符,而且还在不断扩充。这种字符集兼容 ASCII 字符集,采用变长编码方式,编码一个字符需要使用1~4个字节。
3.2 MySQL中支持的字符集和排序规则
3.2.1 MySQL中的utf8和utf8mb4
在 MySQL 中 utf8 是 utf8mb3 的别名,所以之后在 MySQL 中提到 utf8 就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,那请使用 utf8mb4 。
3.2.2 字符集的查看
MySQL 支持好多种字符集,查看当前 MySQL 中支持的字符集可以用下边这个语句:
SHOW (CHARACTER SET|CHARSET) [LIKE 匹配的模式];
其中 CHARACTER SET 和 CHARSET 是同义词,用任意一个都可以。我们查询一下(支持的字符集太多了,我们省略了一些):
            
可以看到,我使用的这个 MySQL 版本一共支持 41 种字符集,其中的 Default collation 列表示这种字符集中一种默认的 比较规则 。大家注意返回结果中的最后一列 Maxlen ,它代表该种字符集表示一个字符最多需要几个字节。
|   字符集名称  |   Maxien  | 
|   ascii  |   1  | 
|   latinl  |   1  | 
|   gb2312  |   2  | 
|   gbk  |   2  | 
|   utf8  |   3  | 
|   utf8mb4  |   4  | 
3.2.3 比较规则的查看
查看 MySQL 中支持的比较规则的命令如下:
SHOW COLLATION [LIKE 匹配的模式];
先查看一下 utf8 字符集下的比较规则:
         
这些比较规则的命名还挺有规律的,具体规律如下:
比较规则名称以与其关联的字符集的名称开头。如上图的查询结果的比较规则名称都是以 utf8 开头的。
后边紧跟着该比较规则主要作用于哪种语言,比如 utf8_polish_ci 表示以波兰语的规则比较,utf8_spanish_ci 是以西班牙语的规则比较, utf8_general_ci 是一种通用的比较规则。
名称后缀意味着该比较规则是否区分语言中的重音、大小写啥的,具体可以用的值如下:
|后缀|英文释义|描述| |:--:|:--:|:--:| | _ai | accent insensitive |不区分重音| | _as | accent sensitive |区分重音| | _ci | case insensitive |不区分大小写| | _cs | case sensitive |区分大小写| | _bin | binary |以二进制方式比较|
比如 utf8_general_ci 这个比较规则是以 ci 结尾的,说明不区分大小写。
每种字符集对应若干种比较规则,每种字符集都有一种默认的比较规则, SHOW COLLATION 的返回结果中的Default 列的值为 YES 的就是该字符集的默认比较规则,比方说 utf8 字符集默认的比较规则就是utf8_general_ci 。
相关文章:
第3章 【MySQL】字符集和比较规则
3.1 字符集和比较规则简介 3.1.1 字符集简介 如何存储字符串?需要建立字符与二进制数据的映射关系。建立这个关系需要: 1.把哪些字符映射成二进制数据? 2.怎么映射? 将一个字符映射成一个二进制数据的过程也叫做 编码 &#…...
2023 年全国大学生数学建模D题目-圈养湖羊的空间利用率
D题目应该是专科题目???不确定了 感觉类似一个细胞分裂问题一样,1,2,4,8, 题目1中规中矩 按照前面说的分配方法,一步一步计算进行 缺口的问题考虑反推回去,…...
攻防世界-WEB-ics-05
打开靶机 只有设备维护中心可以点开 点标签得到新的url pageindex 想到文件包含漏洞(URL中出现path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼 利用php伪协议查看源码 出现一段base64源码,进行转码得出源码 ?pagephp://filter…...
typedef的四种用法
目录 前言 1)为基本数据类型定义类型名 2)为自定义数据类型(结构体、枚举、共用体)定义别名 3)为数组定义简易的别名 4)为指针定义简洁的名称 前言 在看工程的过程中发现typedef的如下用法,…...
Rstudio开不开了怎么办?R is taking longer to start than usual
Rstudio Server 启动时卡死 在使用 linux 服务器版 RstudioServer 的过程中,发现出现了一个问题,导致没有办法正常载入工作页面,网页提示信息是“R is taking longer to start than usual”,直接翻译过来就是“这次启动 R 会比平…...
kubernetes 集群安装加载 br_netfilter 模块
kubernetes 集群安装加载 br_netfilter 模块 Linux 系统默认是禁止数据包转发功能。 加载系统参数: # sysctl -p /etc/sysctl.d/k8s.conf 错误提示: sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or director…...
CATIA Composer软件安装包分享(附安装教程)
目录 一、软件简介 二、软件下载 一、软件简介 CATIA(Computer-Aided Three-dimensional Interactive Application)是一款由法国达索系统公司开发的三维计算机辅助设计(CAD)软件。它是一种全面的产品开发解决方案,广泛…...
入行测试一年半的心得体会
成为xx一员测试已经有1年半了,一直没有真正坐下来花些时间将自己的思路理清一下。刚好近期公司落地了OKR,给自己制定了OKR之后思路终于开始清晰起来,朦朦胧胧地开始看清了远方的路,麻着胆子分析一下自己,毕竟摸黑走路的…...
Vue的props配置项
简介:Vue中的组件模板是可以复用的,但是模板中的数据是可以改变的。props配置项用于解决组件迁移复用时接受和保存传递给组件的数据的问题。 1.如何给组件传递数据? 答:按照key:value的形式进行传递。 2.如何保存传递给组件的数…...
Python开源项目周排行 2023年第32周
#2023年第32周2023年9月2日1htmx一款在Django技术栈最近比较热门的前端框架。 他的理念是—— 「让网页回归HTML的本质,不再受JS束缚」mx 出现在 2020 年,创建者Carson Gross 说 htmx 来源自他于 2013 年研究的一个项目intercooler.js。2020 年ÿ…...
Python实现猎人猎物优化算法(HPO)优化卷积神经网络回归模型(CNN回归算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...
mysql8 Found option without preceding group错误
这个错误说起来是真的坑,今晚帮同学在window操作系统上安装mysql8当自定义my.ini文件的时候 就出现一下错误,死活启动不起来 一直报错。当删掉这个my.ini文件的时候却能启动,刚开始以为是my.ini里的配置选项不对,一个一个筛查后依…...
uniapp 路由不要显示#
在Uniapp中,路由默认使用的是hash模式,即在URL中添加#符号。如果你不想在URL中显示#,可以切换为使用history模式。 要在Uniapp中使用history模式,可以按照以下步骤进行操作: 打开manifest.json文件。在"app&qu…...
算法设计与分析 | 最多约数
题目: 正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如,1,2,5,10 都是正整数10 的约数,且div(10)4。设a 和b 是2 个正整数,a≤b,找出a和b之间约数个数最多的数…...
MySQL 数据库常用操作语句的总结
1、创建数据库: CREATE DATABASE database_name;2、删除数据库: DROP DATABASE database_name;3、选择数据库: USE database_name;4、创建表: CREATE TABLE table_name (column1 datatype [condition],column2 datatype [cond…...
【面试经典150题】H 指数
题目链接 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她&#x…...
ARM DIY(十)LRADC 按键
前言 ARM SOC 有别于单片机 MCU 的一点就是,ARM SOC 的 GPIO 比较少,基本上引脚都有专用的功能,因为它很少去接矩阵键盘、众多继电器、众多 LED。 但有时 ARM SOC 又需要三五个按键,这时候 LRADC 就是一个不错的选择,…...
每日一练 | 网络工程师软考真题Day31
阅读以下说明,答复以下【问题1】至【问题7】 【说明】 某网络拓扑结构如图3-1所示。网络A中的DNS_Server1和网络B中的DNS_Server2分别安装有Windows Server 2003并启用了DNS效劳。DNS_Server1中安装有IIS6.0,建立了一个域名为 abc 的Web站点。 图3-1 【…...
最优化:建模、算法与理论(优化建模——2)
3.10 K-均值聚类 聚类分析是 统计学中的一个基本问题,其在机器学习,数据挖掘,模式识别和图像分析中有着重要应用。聚类不同于分类,在聚类问题中我们仅仅知道数据点本身,而不知道每个数据点具体的标签。聚类分析的任务…...
库的相关操作
目录 一、创建数据库 1,创建数据库规则 2、创建案例 二、字符集和校验规则 1、查看系统默认字符集以及校验规则 2、查看数据库支持的字符集以及校验规则 3、校验规则对数据库的影响 三、操纵数据库 1、查看数据库和目前所在数据库 2、显示创建语句 3、修改数据库 4、…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
