unicode, utf8, utf16, utf32, ASCII关键知识点总结

1. 基本概念

ASCII:字符集,编码范围0x00-0x7F,共128个字符,单字节编码,最高位为0;

Unicode:字符集,编码范围0x00-0x10FFFF,共预留100多万个字符编码位(也叫:CodePoint,码点),在0x00-0x7F范围内,与ASCII编码值相同;

unicode字符集分为两个编码平面:基本平面BMP(basic multilingual plane),增补平面SP(supplementary plane);

BMP范围:0x0000-0xFFFF,其中BMP里面的0xD800-0xDFFF(共2048个码点)是预留闲置区,不对应任何字符;SP范围:0x10000-0x10FFFF;

Unicode字符集是一个编码序号表,在计算机中存储字符,还需要具体的实现方式:主要有UTF8,UTF16,UTF32;

2. 大小端模式

大小端模式(BE,LE):一个字符所用编码字节的存储顺序;

大端模式big endian:字符所用编码字节,高权重字节存在前面(低地址),低权重字节存在后面(高地址);

小端模式little endian:字符所用编码字节,高权重字节存在后面(高地址),低权重字节存在前面(低地址);

3. UTF8

UTF8:unicode字符集的一种实现方式,变长编码,由1-4个字节组成;  
编码方式:

1)单字节,最高位为0,后面7位是对应unicode码点值,与ASCII相同;  
2)n个字节(n>1),第一个字节的前n位置1,第n+1位置零,后面字节的前两位置10,剩余空位顺序填充unicode的码点值

4. UTF16

UTF16:unicode字符集的一种实现方式,变长编码,由2或4个字节组成,每两个字节称为一个编码单元;  
编码方式:

1)BMP平面的unicode字符,unicode码点范围0x00-0xFFFF,UTF16编码与unicode对应码点值相同,高位补零凑齐两个字节

2)SP平面的unicode字符,unicode码点范围0x10000-0x10FFFFF,利用BMP平面的闲置预留区0xD800-0xDFFF的码点进行代理表示,  
将其分为高代理区0xD800-0xDBFF,低代理区0xDC00-0xDFFF,各有1024个码点,共可以表示1024*1024个码点,正好对应SP平面的所有码点,换算方法如下:

高代理区0xD800-0xDBFF:CH=(unicode码点值-0x10000)/0x400+0xD800  
低代理区0xDC00-0xDFFF:CL=(unicode码点值-0x10000)%0x400+0xDC00

5. UTF32

UTF32:unicode字符集的一种实现方式,定长编码,由4个字节组成;  
编码方式:把unicode字符集对应码点高位补零,填充到4个字节

6. BOM头

BOM:byte order mark,在文件头部的几个字节,标识文件存储结构

UTF8编码文件BOM头:EF BB BF,表示带BOM头的UTF8文件(其实没什么用),  
普通的UTF8文件是没有BOM头的,  
无论有无BOM头,UTF8文件都是大端存储  
UTF16编码文件BOM头:FE FF表示大端模式,FF FE表示小端模式

7. 例子:

1)字符:严,unicode码点:0x4E25,UTF16大端模式编码:4E 25,UTF16小端模式编码:25 4E,UTF8编码:E4 B8 A5

2)字符:𝄞,unicode码点:0x1D11E,UTF16大端模式编码:D8 34 DD 1E,UTF16小端模式编码:34 D8 1E DD,UTF8编码:F0 9D 84 9E

8. 本人做的unicode编解码工具,供参考

https://www.myhomeabc.com/tool/tool.html?toolid=unicode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值