首页 » InfoTech »

UTF-8编码和字节序

2017年1月22日 / 152次阅读
计算机

打开支付宝首页,搜索“529018372”,即可领取红包!可重复领。

什么是UTF-8编码?

UTF-8编码是Unicode字符集的一种编码方式,其特点是使用变长字节数来存储数据。一般是1到4个byte,当然,也可以更长,实际上4个byte可以表示2的32次方个不同字符,即4294967296个(约43亿),已经足以编码人类现使用的绝大部分字符了。

为什么要变长呢?实际上变长编码有其优势也有其劣势,优势是节省空间、适合网络传输、自动纠错性能好、扩展性强,劣势是不利于程序内部处理,比如正则表达式检索,UTF-16、UTF-32这些等宽字符编码就比较适合程序处理,但是又比较耗存储空间。

 

UTF-8编码实现是怎样的?

我们已经知道UTF-8编码至少有一个字节,从首字节就可以判断一个字符的UTF-8编码有几个字节。如果首字节以0开头,肯定是单字节编码,如果以110开头,肯定是双字节编码,如果是1110开头,肯定是三字节编码,以此类推。除了单字节外,多字节UTF-8码的后续字节均以10开头。

所以1~4字节UTF-8编码看起来是这样的:

0xxxxxxx

110xxxxx 10xxxxxx

1110xxxx 10xxxxxx 10xxxxxx

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

单字节可编码的Unicode范围:\u0000~\u007F(0~127)

双字节可编码的Unicode范围:\u0080~\u07FF(128~2047)

三字节可编码的Unicode范围:\u0800~\uFFFF(2048~65535)

四字节可编码的Unicode范围:\u10000~\u1FFFFF(65536~2097151)

127、2047、66535、2097151这几个临界值怎么来的?

因为UTF-8编码含有用于标识编码的0、110、1110等,所以1~4个字节的UTF-8编码有效位数分别为7、11、16、21。

推荐阅读:计算机各种编码

 

什么是字节序?

如果一个数据大于127(2的8次方减1),就必须有两个字节或多个字节来放了。一个数字肯定是有高位和低位的,这个小学就有讲过,比如十进制数13,1就是高位,3就是低位。于是问题就出现了,计算机进行数据存取是先处理高位,再处理低位呢,还是处理低位,再处理高位?这个问题就好比吃鸡蛋因该从尖的一头剥开还是应该从圆的一头剥?不同的硬件架构可能使用不同的字节序。先处理高位(低地址)再处理低位,叫做大端字节序;先处理低位再处理高位,叫做小端字节序。

 

UTF-8编码方式节省空间,在网络上传输是一个字节一个字节进行的,所以,UTF-8编码方式不存在字节序的问题。

本文链接:http://www.maixj.net/ict/utf-8-zijiexu-14013
云上小悟 麦新杰(QQ:1093023102)

评论是美德

《UTF-8编码和字节序》有1条评论

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.

  • 麦新杰

    UTF-8,节省空间,单字节传输也没有字节序的问题。 [ ]


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目

AD

ppdai

©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top