编码历史与主要编码方式

名称产生原因字节数说明
ASCII初始编码,匹配英文字符1一共规定了127个字符的编码,32以下的被作为控制字符
扩展ASCII加入符号字符编码1加入新的字母符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,编码到255
GB2312汉字编码2一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字。因此小于127的编码与ascii相同,一共能编码7000多个简体汉字,是最常见的汉字编码方式
GBK扩展GB2312汉字编码容量2只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容(能编码20000多汉字)。向下兼容GB2312
GB18030扩展GBK汉字编码容量,加入少数名族语言1、2、4变长编码单字节与 ASCII 编码兼容,双字节兼容GBK,共收录汉字70244个,还加入了少数名族语言,中国非手持和嵌入式设备的强制编码需支持标准。向下兼容GBK
UTF-8unicode的最通用的编码实现方式1~4根据不同的符号而变化字节长度。英文字母1个字符一个字节,汉字1个字符三个字节,从而降低了储存空间

关于Unicode

存储器容量发展,产生了Unicode,目的是试图将所有语言字符编码。它废弃了以往的其他编码方式重新编码,只是一个符号集。unicode把所有语言字符全对应成两个字节的二进制数字表示,但是它没有实现编码。若字节按unicode的方式,英文字符的编码将造成极大空间浪费。

Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,UTF-8是Unicode常见的编码方式。

Unicode实现的几种方式:

  • UTF-8:一个字符可以用1~4个字节表示,每次传输1个字节数据
  • UTF-16:一个字符可以用2个或4个字节表示,每次传输2或4个字节数据
  • UTF-32:一个字符可以用4个字节表示,每次传输4个字节数据

关于UTF-8 BOM头

实际上,不含 BOM 的 UTF-8 才是标准形式。
不同的文本编辑器对于有无BOM的称呼也略有不同,比如EditPlus,有BOM的称为UTF-8+,无BOM的称为UTF-8,而在Notepad++中,有BOM的被称为标准UTF-8,而无BOM则被称为UTF-8无BOM。

在 Windows 记事本的语境中

  • 所谓的「ANSI」指的是对应当前系统 locale 的遗留(legacy)编码,即默认编码方式的意思。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码,对于繁体中文版会采用Big5码。
  • 所谓的「Unicode」指的是带有 BOM 的小端序 UTF-16。(UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM,在网页上使用BOM是个错误)
  • 所谓的「UTF-8」指的是带 BOM 的 UTF-8。

参考资料:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值