搞清楚字符编码10-万国码[6]

这篇博客简要介绍一下万国码的BOM信息以及万国码的大小端

实际存储编码总结

在前边的几篇博客中介绍在主要的几种万国码的实际存储编码,在这里简单的总结一下.

实际存储编码对应的理论编码是否变长存储编码大小其他名称
ucs-2ucs2不变长存储2个字节Unicode
utf-8ucs2、ucs4变长存储最小1个字节,最大6个字节(分配的基本单位是1个字节)
utf-16ucs4变长存储2个字节或4个字节(分配的基本单位是2字节)
utf-32ucs4不变长存储4个字节ucs-4
BOM信息
什么是BOM信息
  • BOM信息是一种标示,用于告诉文本编辑器这个文件使用的是什么编码,以及编码使用的大端存储还是小端存储.
  • 例如utf-8的BOM信息是EF BB BF,如果保存文件时使用的是UTF-8 with BOM这种编码在文件的最前边就会有这段信息.
  • 如果保存时使用的是普通的UTF-8编码就没有这段BOM信息.
注意

即使文件保存时没有保存BOM信息,文本编辑器仍然能够知道文件使用的是哪种编码.

大小端
例子
  • 例如utf-16要存储编码0x5f3d
  • 此时需要2个字节来存储这个编码,假设这两个字节的地址是95279528
大端存储
  • 编码按照从低位到高位的方向存储到内存中.
  • 即高位字节存储到低地址中,低位字节存储到高地址中.
  • 大端存储的情况如下
小端存储
  • 与大端存储相反
  • 小端存储的情况如下
为什么会有大小端

    文本编辑器在读取编码时,会按顺序按照每种编码方案的基本单位读取。例如utf-8的基本单元是1个字节,那么文本编辑器一次读取1个字节;utf-16的基本单元是2个字节,那么文本编辑器一次读取2个字节.
    假如使用的是utf-16编码,那么在读取到2个字节后,又出现了一个问题,在这个基本单元(2个字节)中,先读取哪个字节.
    大小端存储解决的就是这个问题基本单元内先读哪个字节,如果是大端存储,先读低地址字节;如果是小端存储先读高地址字节.
    因为utf-8的基本单元是一个字节,因此utf-8就不存在大小端的问题了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值