字符编码(ASCII/GBK/UTF-8等)总结

为什么要搞清楚各种字符编码的原理及差异


  • 解决程序乱码问题
  • 优化文件存储空间
  • 优化网络传输流量消耗

以下是总结的一些常见字符编码的介绍:

编码类型字节数年代编码原理字符集缺点备注
ASCII11967从0~127来表示所有英文字符和一些符号
其中0x20以下的字节状态称为“控制码”(例如换行)
英文文字、符号及控制码只包含128个字符是最早的字符编码
由美国国家标准学会(ANSI)制定
GB23121
2
1980一个小于127的字符的意义与原来相同
但两个大于127的字符连在一起时,就表示一个汉字
6763常用汉字、数学符号、罗马字符、ASCII所有字符(半角字符)、ASCII中所有字符重新编码后占2个字节的字符(全角字符)等不包含繁体字GB2312 是对 ASCII 的中文扩展
英文只占1个字节,中文占2个字节
BIG-521984双字节编码,高字节编码范围是0x81-0xFE,低字节编码范围是0x40-0x7E和0xA1-0xFE。
0x8140-0xA0FE是保留区域,用于用户造字区。
13053个中文字、408个字符以及33个控制只包括繁体汉字,不包括简体汉字,一些生僻的汉字也没有收录通行于台湾、香港地区的一个繁体字编码方案。
是我国早期中文电脑的业界标准,也是中文社群最常用的电子汉字字集标准
Unicode21994鉴于1个字节无法表示所有的字符,于是扩展到2个字节,最多可表示6万多个字符
ASCII中的所有字符维持不变,将长度由8位增加到16位,高位补0
其他语言的字符全部重新统一编码
全球统一字符标准ASCII中字符的高8位永远是0,存储空间比ASCII大一倍所有字符都用2个字节表示
UTF-81-4可变1992对不同范围的字符使用不同长度的编码:
1. 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;
2. n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。
一种针对Unicode的可变长度字符编码,又称“万国码”。
UTF-8就是每次1个字节(8个位)传输数据
中文汉字所占字节数较大常用中文字符用utf-8编码占用3个字节(大约2万多字)
但超大字符集中的更大多数汉字要占4个字节(在unicode编码体系中,U+20000开始有5万多汉字)
GBK1
2
1995在GB2312的基础上,不再要求低字节大于127
只要第一个字节是大于127就固定表示这是一个汉字的开始
GBK包括了GB2312的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号
收录了所有Unicode 1.1及GB 13000.1-93之中的汉字
未包含少数民族的字符英文只占1个字节,中文占2个字节
根据西方资料,GBK最初是由微软对GB2312的扩展,并用在win95上
GB180301
2
4
2000
2005
GBK基础上增加了CJK统一汉字扩充A的汉字
包含了GBK的所有内容,同时增加了几千个少数民族的字符
其中4字节部分收录了双字节字符之外的包括CJK统一汉字扩充A在内的GB13000.1 中的全部字符。
英文只占1个字节,中文占2个字节

总结


  • ASCII字符集所用字节数最少,只有1个字节,但只包含英文字符
  • GB系列的字符集都为不定长字符集,英文字符为1个字节,中文字符占2个字节
  • Unicode字符集为定长字符集,所有字符均为2个字节
  • UTF-8字符集为可变长度字符集,英文字符占1个字节,常用中文字符占3个字节

由于UTF-8中文字符所占用的空间为3个及以上的字符,这也是为什么在互联网如此发达的今天,UTF-8几乎成为业内标准,GB2312、GBK等编码方式在国内仍然被广泛使用的原因

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值