前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符集详解

字符集详解

作者头像
人不走空
发布2024-02-20 19:45:47
990
发布2024-02-20 19:45:47
举报
文章被收录于专栏:学习与分享学习与分享

MySQL 字符编码集中有两套 UTF-8 编码实现:utf8?和?utf8mb4

如果使用?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关键字指定数据库的字符集,如:

代码语言:javascript
复制
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

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

代码语言:javascript
复制
CREATE TABLE mytable (id INT, name VARCHAR(255)) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

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

代码语言:javascript
复制
ALTER DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ?
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是字符集??
  • ASCII
    • GB2312字符集
      • BIG5字符集
        • GB18030字符集
          • Unicode字符集
          • MySQL字符集
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com