ASCII和Unicode和Utf-8

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 → 65
  • a → 97
  • 1 → 49
  • ! → 33
  • \n(换行符)→ 10
  • \r(回车符)→ 13
限制

ASCII 仅能表示 英语 字母、数字和部分符号,对于其他语言(例如中文、阿拉伯语、日语等)不支持。


2. Unicode 字符

概念

Unicode 是一种全球字符编码标准,旨在为世界上所有语言的字符提供统一的编码。它支持 多种语言,包括汉字、日文、阿拉伯文等各种符号,目的是消除不同编码方式(如 ASCII、GBK、ISO-8859 等)之间的兼容性问题。

  • 字符集范围:Unicode 为每个字符分配一个独特的编号(称为 码点),范围可以从 00x10FFFF,可以表示 超过百万个字符
  • 字符集:包括了世界上几乎所有的书写系统(例如汉字、日文假名、阿拉伯文等)和符号(例如数学符号、表情符号等)。
Unicode 示例
  • AU+0041
  • aU+0061
  • 1U+0031
  • U+4E2D
  • 🙂(笑脸表情)→ U+1F642
优势
  • 支持世界上几乎所有的文字、符号和表情符号。
  • 提供跨语言、跨平台的兼容性。

3. ASCII 和 Unicode 的区别

方面ASCIIUnicode
字符范围最多 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 示例
  • A0x41(1 字节)
  • 0xE4B8AD(3 字节)
  • 🙂0xF09F9882(4 字节)

6. UTF-8 的主要特点

UTF-8Unicode Transformation Format - 8-bit)是一种广泛使用的字符编码方式,它能够表示几乎所有语言的字符。UTF-8 是一种可变长度的编码方式,每个字符的编码长度可以从 1 到 4 字节不等,具体取决于字符的 Unicode 值。

  1. 兼容 ASCII

    • UTF-8 编码的前 128 个字符与 ASCII 完全兼容,即 Unicode 中的前 128 个字符(包括英文字母、数字、标点符号等)与 ASCII 字符集完全一致。也就是说,ASCII 字符在 UTF-8 中只占 1 字节,这使得 UTF-8 与 ASCII 格式兼容。
  2. 可变长度

    • 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)。
  3. 广泛支持

    • UTF-8 是目前网络上最常用的字符编码格式,几乎所有现代的网页、应用程序、操作系统和数据库都支持 UTF-8 编码。它支持世界上几乎所有的文字系统,包括中文、日文、韩文、阿拉伯文、俄文等。
  4. 无 BOM(字节顺序标记)

    • 与 UTF-16 不同,UTF-8 编码的文件不需要字节顺序标记(BOM)。这使得 UTF-8 更适合网络传输和文本文件保存,因为它不需要额外的字节来表示字节顺序。
  5. 节省空间

    • 对于大多数使用 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
  • 汉字 ‘你’

    • ‘你’ 的 Unicode 值是 U+4F60,UTF-8 编码为 3 字节E4 BD A0
  • 表情符号 ‘😊’

    • ‘😊’ 的 Unicode 值是 U+1F60A,UTF-8 编码为 4 字节F0 9F 98 8A

其他编码方式:

除了 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值