计算机相关知识——字符编码中ASCII、Unicode和UTF-8的相关知识

本文介绍了计算机中的字符编码基础知识,包括位、字节和字符的概念,以及ASCII码、扩展ASCII码、Unicode编码和UTF-8编码的工作原理。ASCII码用一个字节表示英文字符,Unicode编码用两个字节存储所有语言的字符,而UTF-8是一种变长编码,节省空间并兼容ASCII。在内存中统一使用Unicode,而在文件存储和传输时通常采用UTF-8编码。
摘要由CSDN通过智能技术生成

1、位

计算机存储信息的最小单位,称之为位(bit),音译比特,二进制的一个“0”或一个“1”叫一位

2、字节

字节(Byte) 是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位,8个二进制位组成1个字节,而8个二进制位就可以组合出256种状态。所以一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111

3、字符

字符是指计算机中使用的文字和符号,比如“1、2、3、A、B、C、~!·#¥%…*()+”等等。

4、ASCII码

先从最简单的ASCII说起吧,这个大家也熟悉:ASCII全名是American Standard Code for Information Interchange, 叫做“美国信息交换标准码”。上个世纪60年代,美国制定了一套字符编码,对英语字符二进制位之间的关系,做了统一规定,这被称为ASCII码,一直沿用至今。

它用一个字节(8位宽度)来表示一个英文字符,字节的最高位统一规定为0剩余7位用来存储数据表示字符。所以ASCII码能表示128个字符(2的7次方=128),也就是0-127字段。其中包括英文字符阿拉伯数字西文字符以及32个控制字符(不能打印)

比如:空格"SPACE"是32(二进制00100000),大写的字母A是65(二进制01000001)
在这里插入图片描述

5、扩展ASCII码

ASCII码编码的字符太少,后来为了加入其它西文字符的编码,又有了扩展的ASCII编码。扩展的ASCII编码,实在原来ASCII码的基础上,把字节的最高位原本统一设置为0的,也用来存储字符数据,所以就能表示256个英文字符(0-255)

很多国家扩展的ASCII码不统一 ,导致无法通用。0-127字段对应的字符和ASCII码-一样,各个国家都是统一的。但是扩展的部分156- 255字段映射的字符就不相同了。

6、Unicode编码

世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。

由于ASCII编码方式包含的字符太少,基本只对英文字符进行了编码。中国用GB2312等对简体汉字进行了编码别的国家也有自己的编码方式。为了方便交流,防止乱码,Unicode编码方式应运而生。

Unicode编码被称为万国码单一码统一码。它是为每种语言每个字符都设定了统一的,唯一的二进制编码,以满足跨语言,跨平台进行文本交换和处理的需求,是计算机科学领域的一项业界标准。

Unicode编码用两个字节存储一个字符,所以它最大可以对65536个字符(2的16次方)进行编码。它包含了世界上所有的字符,每个字符都是用独一无二的二进制表示。
用Unicode对英文进行编码,相对于ASCII编码来说,会更占用空间。Unicode使用两个字节存储,英文存储只需要占用一个字节,用Unicode编码,就会在多出的一个字节上全部置零,这就造成了空间浪费,于是就有了UTF-8编码。

7、UTF-8编码

这是一种变长的编码方式:它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度:

使用规则:

  • 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的(即当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,如此一来UTF-8编码也可以是为视为一种对ASCII码的拓展)
  • 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码

值得注意的是Unicode编码中一个中文字符2个字节,而UTF-8一个中文字符3个字节。

从Unicode到UTF-8并不是直接的对应,而是要过一些算法和规则来转换

  • 计算机内存中,统一使用Unicode编码;当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码
  • 记事本编辑的时候,从文件读取UTF-8字符转换为Unicode字符内存里;编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件

(参考博客:字符编码中ASCII、Unicode和UTF-8的区别)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值