ISO-8899-1,GBK,UTF等字符编码的历史演进

ASCII(American Standard Code for Information Interchange)美国信息交换标准代码。 早期使用,7bit表示一个字符,还有1bit没用,共计可表示128种,表示英文足够。

ISO-8859-1:早期是ascii码,但后来不够用了,于是在ascii码的基础上有了ISO-8859-1,iso8859-1是完全向下兼容ascii码。iso-8859-1,用完整的一个字节(8位)表示一个字符,不会出现位的丢失。共计可表示256个字符。

GB2312:后来有了中文,256个不够用,于是有了gb2312,用两个字节表示一个汉字,每个汉字有个特定的编码与之对应。GBK(国标扩):但因为汉字中的生僻字,于是有了gbk,是gb2312的超集。           

GB18030:后来又不够了,有了gb18030,最完整的简体中文表现形式。而对于台湾,繁体中文,又有big5。因此对于n多的国家,为了不乱套(每个国家都自己定义字符集编码),出现了国际标准unicode

UNICODE:能支持所有的国家的字符,采用两个字节表示一个字符。新的问题:存储的容量需求太多,因为对于使用英文的国家,使用一个字节就能表示,因此需要用0填充高位字节,凑成2个字节,造成存储空间浪费。这种编码方式不适合存储。

UTF(8、16、32)Unicode Translation Format:因为unicode的问题,出现了utf-x。unicode本身是一种编码方式,utf本身是一种存储方式,utf-8是unicode的实现方式之一。UTF-16LE(little endian)小端,UTF-16BE(big endian)大段,在unicode的规范中,对于磁盘的文件,在文件最前面会加上一个不可见的字符,全称为Zero Width No-Break Space(0宽度不换行空格),本身是不存在的,会有一个相应字符编码:0xFEFF,如果在文件开头出现这个,这种文件称为BE,如果是0xFFFE,则称为LE,既在文件开始加上这么一个,表示大端或是小端。

UTF-8,变长字节表示形式,针对不同的字符,用来表示的字节是不一样的,如:英文A,则用1个字节表示,等似和ASCII一样,对于中文,一般会用三个字节表示一个中文。最多会用6个字节表示一个字符。针对utf-8,有个BOM(Byte Order Mark)标识,像0xFEFF,在windows系统中,存储文件时会带上这个BOM头,对于无法解析这个字符的系统,就会出错。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肚子饿没人理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值