常见编码方式

本文详细介绍了常见的字符编码方式,包括ASCII码,Unicode及其UTF-8和UTF-16的实现,以及GBK编码。ASCII码用于英文字符,Unicode覆盖全球符号,UTF-8以变长方式存储,节省空间;UTF-16则以定长或变长方式,简化编码规则。GBK是对GB2312的扩展,兼容更多汉字和繁体字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见编码方式

ASCll码

统一规定了英文字符与二进制位之间的关系,一共规定了128个字符的编码

Unicode

是一种所有符号的编码,将世界上所有的符号都纳入其中

存在的问题是,Unicode只是一个符号集,只规定了符号的二进制代码,没有规定这个二进制代码该如何储存。为了解决这个问题,就有了Unicode的三种实现方式:UTF-8,UTF-16,UTF-32

UTF-8

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

编码规则:

1.对于单字节的符号,字节的第一位设为0,后面7位为这个符号的Unicode码。因此对于英文字母,UTF-8和ASCll码是相同的

2.对于n字节的符号,第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10,其余的二进制位用这个字符的Unicode码点来填充(从后向前填充,不够的用0补上)

十进制UnicodeUTF-8
0-1270x000000-0x00007F0xxxxxxx(7位)
128-2047位0x000080-0x0007FF110xxxxx 10xxxxxx(11位)
2048-65535位0x000800-0x00FFFF1110xxxx 10xxxxxx 10xxxxxx(16位)
65536-1114111位0x010000-0x10FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx(21位)

UTF-16

Unicode编码点分为17个平面(plane),每个平面包含216(即65536)个码位(code point),而第一个平面称为“基本多语言平面”(Basic Multilingual Plane,简称BMP),其余平面称为“辅助平面”(Supplementary Planes)。其中“基本多语言平面”(00xFFFF)中0xD8000xDFFF之间的码位作为保留,未使用。

UTF-16同时结合了定长和变长两种编码方法的特点。他的编码规则很简单:基本平面的字符占用2个字节,辅助平面的字符占用4个字节。也就是说,UTF-16的编码长度要么是2个字节,要么是4个字节

十进制UnicodeUTF-16
0-65535位0x00000-0x00FFFFxxxxxxxx xxxxxxxx(16位)
65536-1114111位0x010000-0x10FFFF110110yy yyyyyyyy 110111xx xxxxxxxx(20位)

与UTF-8相比虽然表示的方法简单方便,有很大一部分字符用一个字节就可以表示的现在要用两个字节表示,有占有的存储空间放大一倍,会增大网络传输的流量,而且没必要这么做。

GBK

是GB2312的扩展,是向上兼容的,GB2312(国标码)中的汉字编码与GBK中汉字的相同。另外,GBK还包含繁体字的编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值