mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-08 13:36:06 +00:00
build
This commit is contained in:
@@ -2,11 +2,11 @@
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 3.4. 字符编码 *
|
||||
# 3.4 字符编码 *
|
||||
|
||||
在计算机中,所有数据都是以二进制数的形式存储的,字符 `char` 也不例外。为了表示字符,我们需要建立一套“字符集”,规定每个字符和二进制数之间的一一对应关系。有了字符集之后,计算机就可以通过查表完成二进制数到字符的转换。
|
||||
|
||||
## 3.4.1. ASCII 字符集
|
||||
## 3.4.1 ASCII 字符集
|
||||
|
||||
「ASCII 码」是最早出现的字符集,全称为“美国标准信息交换代码”。它使用 7 位二进制数(即一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的字符。这包括英文字母的大小写、数字 0-9 、一些标点符号,以及一些控制字符(如换行符和制表符)。
|
||||
|
||||
@@ -18,13 +18,13 @@ comments: true
|
||||
|
||||
在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。
|
||||
|
||||
## 3.4.2. GBK 字符集
|
||||
## 3.4.2 GBK 字符集
|
||||
|
||||
后来人们发现,**EASCII 码仍然无法满足许多语言的字符数量要求**。比如汉字大约有近十万个,光日常使用的就有几千个。中国国家标准总局于 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满足了汉字的计算机处理需要。
|
||||
|
||||
然而,GB2312 无法处理部分的罕见字和繁体字。「GBK」字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。
|
||||
|
||||
## 3.4.3. Unicode 字符集
|
||||
## 3.4.3 Unicode 字符集
|
||||
|
||||
随着计算机的蓬勃发展,字符集与编码标准百花齐放,而这带来了许多问题。一方面,这些字符集一般只定义了特定语言的字符,无法在多语言环境下正常工作。另一方面,同一种语言也存在多种字符集标准,如果两台电脑安装的是不同的编码标准,则在信息传递时就会出现乱码。
|
||||
|
||||
@@ -44,7 +44,7 @@ Unicode 是一种字符集标准,本质上是给每个字符分配一个编号
|
||||
|
||||
然而 ASCII 码已经向我们证明,编码英文只需要 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下大小的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。
|
||||
|
||||
## 3.4.4. UTF-8 编码
|
||||
## 3.4.4 UTF-8 编码
|
||||
|
||||
目前,UTF-8 已成为国际上使用最广泛的 Unicode 编码方法。**它是一种可变长的编码**,使用 1 到 4 个字节来表示一个字符,根据字符的复杂性而变。ASCII 字符只需要 1 个字节,拉丁字母和希腊字母需要 2 个字节,常用的中文字符需要 3 个字节,其他的一些生僻字符需要 4 个字节。
|
||||
|
||||
@@ -72,7 +72,7 @@ UTF-8 的编码规则并不复杂,分为两种情况:
|
||||
|
||||
从兼容性的角度看,UTF-8 的通用性最佳,许多工具和库都优先支持 UTF-8 。
|
||||
|
||||
## 3.4.5. 编程语言的字符编码
|
||||
## 3.4.5 编程语言的字符编码
|
||||
|
||||
对于以往的大多数编程语言,程序运行中的字符串都采用 UTF-16 或 UTF-32 这类等长的编码。这是因为在等长编码下,我们可以将字符串看作数组来处理,其优点包括:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user