Unicode编码,utf-8、utf-16、utf-32、gbk、宽字节字符、多(窄)字节字符的简单说明

最近工作需要,做了很多unicode、gbk、宽字节、多字节的转换,然后自己就混乱了,所以就搜索的一些资料,简单汇总一下,防止下次的混乱。

ASCII编码

美国人制定的一套字符集,描述英语中的字符和8位二进制数(1字节)的对应关系,这被称为 ASCII 码。ASCII码共定义了128个字符,使用了8位二进制数中的7位,最高位统一规定为0。

unicode编码

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。 它是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求.
UTF 是 Unicode Transformation Format 的缩写,意思是“Unicode转换格式”,后面的数字表明至少使用多少个比特位(Bit)来存储字符。Unicode可以使用的编码有三种,分别是UTF-8,UTF-16,UTF-32。

utf-8

utf-8的编码规则很简单:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。具体的转换表如下:
在这里插入图片描述

xxx 就用来存储 Unicode 中的字符编号

utf-16

utf-16大部分以固定长度的字节 (2字节) 储存,也有四个字节储存,但UTF-16却无法兼容于ASCII编码

字节utf-16
2xxxxxxxx xxxxxxxx
4110110xx xxxxxxxx 110111xx xxxxxxxx

utf-32

utf-32:所有的字符都以4个字节长度来储存,也无法兼容ASCII编码

GBK

gbk(多字节字符编码):字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。而英文字符最高位是0。Gbk编码容纳了所有的中国字符。

宽字符和窄字符(多字节字符)

首先要注意:宽窄字符与UTF16,UTF8不是对应的关系
有的编码方式采用 1~n 个字节存储,是变长的,例如 UTF-8、GB2312、GBK 等;如果一个字符使用了这种编码方式,我们就将它称为多字节字符,或者窄字符
有的编码方式是固定长度的,不管字符编号大小,始终采用 n 个字节存储,例如 UTF-32、UTF-16 等;如果一个字符使用了这种编码方式,我们就将它称为宽字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值