除utf-8之外的字符编码格式是咋解决大尾端与小尾端的问题的
GB2312、GBK等编码是与UTF-8类似,并没有大端小端的区别,因为这些编码已经规定好了第一个字节是什么,第二个字节是什么,等等。而UTF-16每一个编码单位是一个16位整数,但并没有硬性规定这个整数是使用大端还是小端进行存储,所以才会有大端和小端两种存储方式,并使用BOM进行区分。
附:GB2312-1980 标准原文节选
【除utf-8之外的字符编码格式是咋解决大尾端与小尾端的问题的】
■网友
UTF-16的话是使用BOM来判断字节序的,如果BOM不存在的话就有概率出事。GBK貌似没有BOM什么的,所以应该是,传输协议会规定一种字节序,除此之外得靠元数据来标识吧。。。
■网友
其实根本原因是unicode官方 最初没把标准说清楚,只规定了字符集,没规定编码方式。于是乎大家望文生义,想着正着写也行 倒着写也行。utf8因为是1-4个字节,必须正着写,所以不存在这个问题。而utf16以上都存在这么一个被称为大小端的问题。而像gb2312 gbk国标,因为规定比较死,所以就没有这种混乱。幸好unicode规定为每种编码添加一个bom前缀,用于标识编码。电脑也正是通过识别这个前缀标记识别不同unicode编码的。
■网友
因为gbk utf8的存储单位是字节,存储介质的最小存储单位也是字节,所以并没有字节顺序的问题,文件系统已经规定好了从文件的哪一端读。而utf16的存储单位是双字节,那么存在一个问题,一个utf16的存储单位里有两个存储介质的存储单位,哪个在前哪个在后就要去规定一下。这跟发送数据时,字节为单位的数据不需要使用网络字节序,int等多字节单位的数据需要转换网络字节序是一样的。
推荐阅读
- Windows中文件名最大字符数
- 宝宝|除了排气之外,你还应该懂的技巧宝宝肠绞痛哭闹不止、睡不好
- 汽车知识|依维柯欧胜2021款:可能是你意识之外的另一种汽车
- 车市后观察|意料之外还是情理之中?这款中国品牌轿车强势进入前10榜单
- 除了投诉之外,咋才能更有效地阻止联通的劫持呢
- json下面代码字符编码的规则是啥
- AWS或阿里云为何使用密钥对而不是单一字符串作为 Token
- Y-Combinator和Techstars自己本身通过啥得到利润,除了得到初创企业的股权之外
- 书戈看车|硬派实力之外还有柔情一面,坦克300注定不只属于猛男
- 爱卡新车速报|意料之外 情理之中 爱卡试驾ARCFOXαT
