关于字符编码

字符和码值的对应关系是通过字符编码表来决定的

ASCII码

标准ASCII码使用7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符。一共可以表示128种字符。

Unicode字符集

Unicode是国际组织制定的旨在容纳全球所有字符的编码方案。
在Unicode中,字母、数字、汉字都是使用2个字节来表示的。
Unicode字符集对所有字符进行了编号,但是并没有指定这些编号的编码规则。

在Unicode中,汉字“中”的编号是:0x4e2d,“国”的编号是:0x56fd,对于“0x4e2d”,将其转换为对应的二进制数值为01001110 00101101,如果说把这样的数据直接存入计算机中,那么在我们从计算机中读取信息的时候,我们是没有办法知道一个字节是一个单独的字符还是和后面的字节联合组成一个字符,由此,便出现了Unicode字符集的实现方式,UTF-8是较为常用的一种。

UTF-8

UTF-8是Unicode字符集的一种编码实现方式,是一种可变长度的字符编码,也是目前使用最广泛的Unicode实现方式。

编码方式

		00-7F:				0xxxxxxx
		80-7FF:				110xxxxx 10xxxxxx
		800-FFFF:			1110xxxx 10xxxxxx 10xxxxxx
		10000-10FFFF: 		11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

解读
如果Unicode的编码在是00-7F范围内的,那么就用一个字节来存储,第一位是0;

如果是在80-7FF范围内的,那么用两个字节来存储,第一个字节的前三位是110,另一个字节的前两位是10;

如果是在800-FFFF范围内的,那么用三个字节来存储,第一个字节的前四位是1110,剩下的字节的前两位是10;

如果是在10000-10FFFF范围内的,那么用四个字节来存储,第一个字节的前五位是11110,剩下的字节的前两位是10;

举个例子
比如说汉字“中”的编码是0x4e2d,是在800-FFFF范围内的,那么就用三个字节来存储
0x4e2d转换为二进制就是01001110 00101101,将它填充到1110xxxx 10xxxxxx 10xxxxxx中,如下图
在这里插入图片描述
经过UTF-8编码得到的是11100100 10111000 10101101,转换为十六进制就是e4 b8 ad

利用在线工具对e4 b8 ad进行解码,得到汉字“中”
在这里插入图片描述

GBK

GBK编码,是对GB2312编码的扩展。
GBK编码采用双字节编码方案,其编码范围:8140-FEFE。

GB2312

中文字符集
编码范围比GBK要小。

ANSI

ANSI并不是某一种特定的字符编码,而是在不同的系统中ANSI表示不同的编码,中文系统中的ANSI编码是GBK编码,美国的系统中的ANSI编码其实是ASCII码。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值