UTF-8和UTF-16是什么?有哪些区别?老男孩Linux运维
老男孩IT教育
常见问题
2021年10月14日 16:36
大部分人认为计算机是万能的,殊不知其实计算机只认识01这样的字符串,为了让大众理解的更清楚,后来就用十进制、八进制、十六进制来进行表示,实际都是一样的,只不过转换成进制方便我们查看和使用,UTF-8和UTF-16就是这样的存在,那两者有何区别呢?请看下文:
大部分人认为计算机是万能的,殊不知其实计算机只认识01这样的字符串,为了让大众理解的更清楚,后来就用十进制、八进制、十六进制来进行表示,实际都是一样的,只不过转换成进制方便我们查看和使用,UTF-8和UTF-16就是这样的存在,那两者有何区别呢?请看下文:
| UTF-8
编码规则较简单,如果只有1个字节,那最高比特位为0,如果有多个字节,那么第1个字节从最高位开始,连续有几个比特位的值为1,剩下的字节均以10开头,具体表现形式为:
0xxxxxxx:单字节编码形式;
110xxxxx 10xxxxxx:双字节编码形式;
1110xxxx 10xxxxxx 10xxxxxx:三字节编码形式;
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx:四字节编码形式。
优势在于没有字节序的概念,非常适用于字符串的网络数据传输,不需要考虑大小端问题,对于非英文网页,可以有效避免各种乱码问题。
| UTF-16
使用2个或4个字节进行存储,对于Unicode编号范围在0~FFFF之间的字符,UTF-16使用2个字节存储,不需要进行编码转换,跟UTF-32类似,对于Unicode编号范围在10000~10FFFF之间的字符,UTF-16使用4个字节存储。
优势在于常用字符都可以使用2个字节表示,所以在Windows操作系统上,特别适合使用wchar_t作为字符串的存储基类型,1个wchar_t表示1个字符,操作起来非常方便。
关于"UTF-8和UTF-16是什么?有哪些区别?"的话题到这里就结束了,老男孩教育10年技术沉淀,真实案例结合理论授课,使学员更好的过渡到工作岗位,想深入的学习Linux云计算运维的知识,可以关注下老男孩教育。
推荐阅读:
【微服务技术】Docker中有哪些常用命令?Docker命令详解
