字符集详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 字符集详解

MySQL 字符编码集中有两套 UTF-8 编码实现:utf8utf8mb4

如果使用 utf8 的话,存储 emoji 符号和一些比较复杂的汉字、繁体字就会出错。

 

什么是字符集

字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。

 

字符是各种文字和符号的统称,包括各个国家文字、标点符号、表情、数字等等。 字符集 就是一系列字符的集合。字符集的种类较多,每个字符集可以表示的字符范围通常不同,就比如说有些字符集是无法表示汉字的。

计算机只能存储二进制的数据,那英文、汉字、表情等字符应该如何存储呢?

我们要将这些字符和二进制的数据一一对应起来,比如说字符“a”对应“01100001”,反之,“01100001”对应 “a”。我们将字符对应二进制数据的过程称为"字符编码",反之,二进制数据解析成字符的过程称为“字符解码”。

 

ASCII

ASCII (American Standard Code for Information Interchange,美国信息交换标准代码) 是一套主要用于现代美国英语的字符集(这也是 ASCII 字符集的局限性所在)。

为什么 ASCII 字符集没有考虑到中文等其他字符呢? 因为计算机是美国人发明的,当时,计算机的发展还处于比较雏形的时代,还未在其他国家大规模使用。因此,美国发布 ASCII 字符集的时候没有考虑兼容其他国家的语言。

ASCII 字符集至今为止共定义了 128 个字符,其中有 33 个控制字符(比如回车、删除)无法显示。

一个 ASCII 码长度是一个字节也就是 8 个 bit,比如“a”对应的 ASCII 码是“01100001”。不过,最高位是 0 仅仅作为校验位,其余 7 位使用 0 和 1 进行组合,所以,ASCII 字符集可以定义 128(2^7)个字符。

由于,ASCII 码可以表示的字符实在是太少了。后来,人们对其进行了扩展得到了 ASCII 扩展字符集 。ASCII 扩展字符集使用 8 位(bits)表示一个字符,所以,ASCII 扩展字符集可以定义 256(2^8)个字符。

常见的字符集有很多,其中最常用的是ASCII字符集。ASCII字符集包括了基本的英文字母、数字和符号,是计算机中最常用的字符集之一。其他常见的字符集包括:

GB2312字符集

GB2312是中国国家标准的汉字字符集,包括了简体中文字符集,总计有6763个汉字。该字符集是GB18030字符集的前身,主要用于简体中文的处理。

BIG5字符集

BIG5是中国台湾省使用的汉字字符集,总计有13053个汉字。BIG5也被广泛用于繁体中文的处理。

GB18030字符集

GB18030是中国国家标准的汉字字符集,是目前最新的版本。它包括了简体中文字符集、繁体中文字符集以及少数民族文字符集,总计有70244个汉字。GB18030字符集被广泛应用于中文信息处理领域。

Unicode字符集

Unicode是一种通用的字符集,旨在包含全世界所有语言的字符。它包括了多种不同语言的字符,包括中文、英文、日文、韩文等。Unicode字符集被广泛应用于计算机领域,支持多种不同的语言文字处理。

除了以上这些常见的字符集外,还有许多其他的字符集,例如ISO-8859-1、UTF-8、UTF-16等。这些字符集都有各自的特点和用途,根据不同的需求选择适合的字符集进行处理。

 

 

MySQL字符集

一、概述

MySQL字符集是MySQL中使用的字符编码方式,它决定了数据库、表和列中存储的数据的编码方式,也影响了查询和排序等操作的结果。了解MySQL字符集及其相关的概念和设置,对于正确使用和管理MySQL数据库至关重要。本文将详细介绍MySQL字符集的相关知识,包括字符集的概念、分类、设置和使用。

二、字符集概念

字符集是多个字符的集合,它定义了字符的编码方式。在MySQL中,每个字符集都有对应的校对规则,用于比较字符串的大小写、排序等操作。字符集的种类很多,包括ASCII、Latin、GBK、GB2312、Big5、UTF-8、UTF-16、UTF-32等。不同的字符集适用于不同的语言和场景,选择合适的字符集可以大大提高数据处理效率和准确性。

三、字符集分类

单字节字符集

单字节字符集是指每个字符只占用一个字节的字符集,如ASCII字符集。这种字符集的优点是兼容性好,适用于大多数场景。但是,由于编码空间有限,单字节字符集只能表示基本的英文字符和数字,无法表示多语言字符。

多字节字符集

多字节字符集是指每个字符占用多个字节的字符集,如UTF-8、UTF-16等。这种字符集可以表示多种语言字符,包括中文、日文、韩文等。多字节字符集的优点是支持多种语言,缺点是在处理大量数据时可能会占用更多的存储空间。

宽字符集

宽字符集是一种针对Unicode的可变长度字符编码,也称为万国码。它用1到6个字节编码Unicode字符,用在网页上可以同一页面显示中文简体繁体及其它语言(如英文、日文、韩文)。UTF-8是目前最常用的宽字符集之一。

四、MySQL字符集设置

在MySQL中,可以通过以下几种方式设置字符集:

创建数据库时设置字符集:在创建数据库时,可以使用CHARACTER SET关键字指定数据库的字符集,如:

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

创建表时设置字符集:在创建表时,可以使用CHARACTER SET关键字指定表的字符集,如:

CREATE TABLE mytable (id INT, name VARCHAR(255)) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


修改数据库或表的字符集:可以使用ALTER DATABASE或ALTER TABLE语句修改数据库或表的字符集,如:

ALTER DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 JavaScript 前端开发
Unicode 字符集的运用
【8月更文挑战第31天】
20 3
|
2月前
|
存储 测试技术 开发者
字符集与Unicode的详解
【8月更文挑战第6天】本文全面介绍了Python中字符编码与解码的基础及高级应用。首先概述了字符集与编码的概念,重点强调Unicode及其重要性。随后,通过实例展示了Python如何执行基本的编码和解码任务,包括处理Unicode码点、解决编码错误以及指定文件编码。文章还深入探讨了UTF-8的工作原理及如何在Python中利用`codecs`模块自定义编码器,使用`unicodedata`进行Unicode字符处理,以及如何转换文件编码。最后,提出了处理字符编码的最佳实践建议,帮助开发者编写更健壮的代码。
74 2
|
4月前
|
存储 自然语言处理 数据可视化
字符集编码(三):Unicode
中国的 GB 编码和日本的 JIS 编码在兼容 ASCII 的同时,又给 ASCII 中的可见字符做了个“全角”编码(原 ASCII 中的字符被称为“半角”字符)。所谓全角和半角字符,在字形和字意上都完全相同,只是全角字符占用宽度(注意不是字形本身的宽度)是半角字符的两倍(据说是为了中英文混排时的美观效果),按照 Unicode 的设计原则,这种问题应该交由文字渲染程序去处理,
45 1
|
存储 自然语言处理 Java
字符集详解
字符集详解
|
关系型数据库 MySQL Shell
latin1字符集的数据转换为utf8字符集
latin1字符集的数据转换为utf8字符集
919 0
|
存储 关系型数据库 MySQL
MySQL数据库(6):字符集 character
MySQL数据库(6):字符集 character
143 0
|
JavaScript 自然语言处理
|
存储 API Windows