计算机基础 — 字符编码


字符编码,本质是 二进制数据语言文字的一一 对应关系。

一、ASCII 编码

ASCII(American Standard Code for Information Interchange)是最早的字符编码标准,用于将字符表示为7位二进制数。它定义了128个字符的编码,包括英文字母(大写和小写)、数字标点符号和一些控制字符

1、编码范围:ASCII 编码使用7位二进制数表示字符,因此可以表示的字符范围是0-127(十进制)。这个范围被分为几个部分,包括控制字符可打印字符扩展字符
2、控制字符:ASCII 编码的前32个字符(0-31)是控制字符,用于控制计算机的特殊操作,如换行、回车、制表等。这些字符通常无法在屏幕上显示,但它们对于控制文本的格式布局非常重要。
3、可打印字符:ASCII 编码的可打印字符范围是32-126。这包括常见的英文字母(大写和小写)、数字标点符号和一些特殊字符,如空格、换行符和回车符等。
4、扩展字符:ASCII 编码只能表示128个字符,这对于许多非英语字符是不够的。为了支持更多字符,出现了许多 ASCII 的扩展版本,如 ISO-8859 等。
5、ASCII 表:ASCII 表是一个字符与其对应 ASCII 码的对照表。可以通过查看 ASCII 表来了解每个字符的编码值。

在这里插入图片描述

二、中文编码

GB2312(GuoBiao 2312)是中国国家标准局于1980年发布,1981年开始实施的中文字符集编码标准。它是 GBK 编码的前身,主要用于表示简体中文字符。

1、字符集范围:GB2312 字符集包含了6763个字符,其中包括了基本的汉字英文字母数字标点符号等。它主要覆盖了常用的简体中文字符,但并不包含所有中文字符。
2、编码方案:GB2312 采用双字节编码方案,每个中文字符用两个字节表示。第一个字节的范围是 0xA1-0xF7,第二个字节的范围是 0xA1-0xFE。每个字节的高位表示区号,低位表示位号,根据区号和位号的组合可以确定一个具体的字符。
3、汉字区域:GB2312 将中文字符划分为94个区,每个区包含94个位,共计8836个字符。区号从16到87,位号从1到94。GB2312 中最常见的汉字位于第一个区(区号16),并且按照拼音顺序排列。
4、兼容性GB2312ASCII 编码兼容,即 GB2312 编码的前128个字符与 ASCII 编码完全一致。这意味着可以在 GB2312 编码中直接使用 ASCII 字符,而无需进行额外的转换。

GB2312 所收录的汉字已经覆盖中国大陆99.75%的使用频率,但是对一些罕见的字和繁体字还有很多少数民族使用的字符都没法处理,于是后来就在 GB2312 的基础上创建了一种叫 GBK 的字符编码。GBK 是利用了 GB2312 中未被使用的编码空间上进行扩充,所以它能完全兼容 GB2312 和 ASCII。

三、Unicode(万国码)

Unicode 是一种国际标准,旨在为世界上所有的字符和符号分配唯一的标识号码。它定义了一个巨大的字符集,包含了几乎所有的语言字符符号标点符号

日本把日文编到 JIS 里,韩国把韩文编到 Euc-kr 里。各国有各国的标准,难免会出现冲突,所以在多语言混合的文件中,显示出来会有乱码。Unicode 把所有语言都统一到一套编码里,这样就不会再有乱码问题了。现代操作系统和大多数编程语言都直接支持 Unicode。

1、字符集范围:Unicode 字符集包含了超过130,000个字符,其中包括了几乎所有已知的语言字符,包括汉字拉丁字母希腊字母西里尔字母阿拉伯字母日文假名数学符号货币符号等。Unicode 的目标是覆盖全球范围内的所有字符。
2、编码方案:Unicode 采用了固定长度的编码方案,其中最常见的编码方案是 UTF-8、UTF-16 和 UTF-32。
1)UTF-8:UTF-8 是一种可变长度编码方案,用1到4个字节表示一个字符,可以表示 Unicode 字符集中的所有字符。它是最常用的 Unicode 编码方案,也是互联网上广泛使用的编码方案。
2)UTF-16:UTF-16 是一种固定长度编码方案,用2或4个字节表示一个字符,可以表示 Unicode 字符集中的所有字符。它主要用于操作系统程序内部的字符串表示。
3)UTF-32:UTF-32 是一种固定长度编码方案,用4个字节表示一个字符,可以表示 Unicode 字符集中的所有字符。UTF-32 编码在存储和处理上需要更多的空间,因此在实践中使用较少。
3、Unicode 码点:每个 Unicode 字符都有一个唯一的码点(Code Point),它是一个数字,表示字符在 Unicode 字符集中的位置。例如,拉丁字母 “A” 的码点是 U+0041,汉字"中"的码点是 U+4E2D。码点通常以 U+ 前缀加上一个十六进制数表示。
4、Unicode 实现:Unicode 的实现是通过分配每个字符一个唯一的码点,并为每个码点定义一个字符的名字和属性。Unicode Consoritum 负责维护和发展 Unicode 标准,它不仅定义字符集,还提供了字符属性排序规则标点符号规范等。
5、字符编码转换:在实际编程中,常常需要在不同的字符编码之间进行转换。例如,将 Unicode 字符转换为 UTF-8 编码的字节序列,或者将 UTF-8 编码的字节序列转换为 Unicode 字符。编程语言提供了相关的编码转换函数,如 Python 中的 encode() 和 decode() 方法。

四、不同语言/平台的编码类型

语言/平台编码类型
JavaUTF-16
JavaScriptUTF-16
C/C++UTF-8
PythonUTF-8
LinuxUTF-32
WindowsUTF-16

GBK 和 UTF-8 的区别:
GBK 编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。GBK 包含全部中文字符;
做中文程序的开发用 GBK,因为 utf-8 编码的中文使用了三个字节,用 gbk 节省空间。
如果是英文网站开发,用 utf-8,因为英文只占一个字节,而 gbk 中英文是两个字节,并且国外客户访问 gbk 要下载语言包。

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值