1. ASCII 字符串
概念
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种字符编码标准,用于表示英文字母、数字、标点符号和控制字符(例如换行符、回车符等)。
- 字符集范围:ASCII 使用 7 位编码,最多可以表示 128 个字符(从 0 到 127)。这些字符包括:
- 控制字符(例如换行符、回车符,ASCII 码值从 0 到 31)。
- 可打印字符(包括字母、数字、标点符号,ASCII 码值从 32 到 126)。
- 字符集:
A-Z,a-z,0-9, 特殊符号(如!,@,#,*等),以及一些控制字符。
ASCII 示例
以下是一些常见的 ASCII 字符及其对应的代码:
A→ 65a→ 971→ 49!→ 33\n(换行符)→ 10\r(回车符)→ 13
限制
ASCII 仅能表示 英语 字母、数字和部分符号,对于其他语言(例如中文、阿拉伯语、日语等)不支持。
2. Unicode 字符
概念
Unicode 是一种全球字符编码标准,旨在为世界上所有语言的字符提供统一的编码。它支持 多种语言,包括汉字、日文、阿拉伯文等各种符号,目的是消除不同编码方式(如 ASCII、GBK、ISO-8859 等)之间的兼容性问题。
- 字符集范围:Unicode 为每个字符分配一个独特的编号(称为 码点),范围可以从 0 到 0x10FFFF,可以表示 超过百万个字符。
- 字符集:包括了世界上几乎所有的书写系统(例如汉字、日文假名、阿拉伯文等)和符号(例如数学符号、表情符号等)。
Unicode 示例
A→U+0041a→U+00611→U+0031中→U+4E2D🙂(笑脸表情)→U+1F642
优势
- 支持世界上几乎所有的文字、符号和表情符号。
- 提供跨语言、跨平台的兼容性。
3. ASCII 和 Unicode 的区别
| 方面 | ASCII | Unicode |
|---|---|---|
| 字符范围 | 最多 128 个字符(0-127),仅限于英文字母、数字、符号和控制字符 | 支持超过百万个字符,包括世界各国语言及符号 |
| 编码方式 | 7 位编码,最多 128 个字符 | 采用多种编码方式(UTF-8, UTF-16, UTF-32 等) |
| 支持语言 | 仅支持英语字母、数字及部分符号 | 支持全球几乎所有的语言、符号和表情符号 |
| 表示能力 | 只能表示基本的西方语言字符 | 可以表示几乎所有语言、数学符号、表情符号等 |
| 兼容性 | 与旧系统和硬件高度兼容 | 较新的标准,需支持较新的硬件和软件系统 |
4. ASCII 与 Unicode 编码示例
ASCII 编码
字符: "A" "a" "1" "!" "\n"
ASCII 编码: 65 97 49 33 10
Unicode 编码
字符: "A" "a" "1" "中" "🙂"
Unicode 编码: U+0041 U+0061 U+0031 U+4E2D U+1F642
5. Unicode 的不同编码方式
- UTF-8:变长编码,兼容 ASCII 编码。ASCII 字符只占 1 个字节,其他字符根据需要占用更多字节。
- UTF-16:每个字符占用 2 或 4 个字节,适用于大部分常用字符。
- UTF-32:每个字符占用 4 个字节,支持所有 Unicode 字符,但占用内存较大。
UTF-8 示例
A→0x41(1 字节)中→0xE4B8AD(3 字节)🙂→0xF09F9882(4 字节)
6. UTF-8 的主要特点
UTF-8(Unicode Transformation Format - 8-bit)是一种广泛使用的字符编码方式,它能够表示几乎所有语言的字符。UTF-8 是一种可变长度的编码方式,每个字符的编码长度可以从 1 到 4 字节不等,具体取决于字符的 Unicode 值。
-
兼容 ASCII:
- UTF-8 编码的前 128 个字符与 ASCII 完全兼容,即 Unicode 中的前 128 个字符(包括英文字母、数字、标点符号等)与 ASCII 字符集完全一致。也就是说,ASCII 字符在 UTF-8 中只占 1 字节,这使得 UTF-8 与 ASCII 格式兼容。
-
可变长度:
- UTF-8 采用可变长度的方式进行编码,每个字符使用 1 到 4 个字节来表示:
- 1 字节:用于表示 ASCII 字符(0-127)。
- 2 字节:用于表示大部分欧洲及中东语言中的字符(Unicode 码点 U+0080 到 U+07FF)。
- 3 字节:用于表示大部分东亚语言中的字符(Unicode 码点 U+0800 到 U+FFFF)。
- 4 字节:用于表示一些较为特殊的字符,包括表情符号和其他少数民族语言的字符(Unicode 码点 U+10000 到 U+10FFFF)。
- UTF-8 采用可变长度的方式进行编码,每个字符使用 1 到 4 个字节来表示:
-
广泛支持:
- UTF-8 是目前网络上最常用的字符编码格式,几乎所有现代的网页、应用程序、操作系统和数据库都支持 UTF-8 编码。它支持世界上几乎所有的文字系统,包括中文、日文、韩文、阿拉伯文、俄文等。
-
无 BOM(字节顺序标记):
- 与 UTF-16 不同,UTF-8 编码的文件不需要字节顺序标记(BOM)。这使得 UTF-8 更适合网络传输和文本文件保存,因为它不需要额外的字节来表示字节顺序。
-
节省空间:
- 对于大多数使用 ASCII 字符的文本(如英文),UTF-8 是最节省空间的编码方式,因为这些字符只占 1 字节。而对于包含大量非 ASCII 字符的文本,UTF-8 会使用更多的字节,但比其他编码格式(如 UTF-16)通常更节省空间。
UTF-8 编码的例子
下面是 UTF-8 编码的一些例子,展示了不同字符的编码情况:
-
字母 ‘A’:
- ASCII 和 UTF-8 编码一样,
A的 Unicode 值是 U+0041,UTF-8 编码为 1 字节:41。
- ASCII 和 UTF-8 编码一样,
-
汉字 ‘你’:
- ‘你’ 的 Unicode 值是 U+4F60,UTF-8 编码为 3 字节:
E4 BD A0。
- ‘你’ 的 Unicode 值是 U+4F60,UTF-8 编码为 3 字节:
-
表情符号 ‘😊’:
- ‘😊’ 的 Unicode 值是 U+1F60A,UTF-8 编码为 4 字节:
F0 9F 98 8A。
- ‘😊’ 的 Unicode 值是 U+1F60A,UTF-8 编码为 4 字节:
其他编码方式:
除了 UTF-8,还有其他几种 Unicode 编码方式,例如:
- UTF-16:每个字符使用 2 或 4 个字节。
- UTF-32:每个字符使用 4 个字节。
这些编码方式各有优缺点,UTF-8 由于其兼容性和空间效率,成为了最常见的 Web 编码格式。
总结
- ASCII 是一种早期的字符编码标准,适用于英语和一些符号,只能表示 128 个字符。
- Unicode 是现代的字符编码标准, 是字符集,定义了所有字符的唯一代码点,支持全球几乎所有语言、符号和表情符号,旨在解决不同编码之间的兼容性问题。
- UTF-8 是一种广泛使用的字符编码方式,支持所有的 Unicode 字符,兼容 ASCII,且具有可变长度的特点,可将这些 Unicode 代码点转换为字节以便存储和传输。
Unicode 和 UTF-8
- Unicode 是一个字符集,它只是定义了字符和符号的唯一代码点,而没有指定如何存储或传输它们。
- UTF-8 是一种编码方式,它将 Unicode 字符集中的字符转换为字节流,以便在计算机中存储或通过网络传输。
Unicode 和 ASCII
Unicode 是 ASCII 的超集,ASCII 字符集中的字符在 Unicode 中有相同的编码值,因此可以通过 Unicode 兼容 ASCII。
1725

被折叠的 条评论
为什么被折叠?



