前言
在介绍这些编码方式之前我们先要谈谈ASCII码,在计算机中,1 字节对应 8 位二进制数,而每位二进制数有 0、1 两种状态,因此 1 字节可以组合出 256 种状态。如果这 256 中状态每一个都对应一个符号,就能通过 1 字节的数据表示 256 个字符。于是有人就制定了一套编码,描述英语中的字符和这 8 位二进制数的对应关系,这被称为 ASCII 码。但是世界语言那么多,128个字符又怎么能够呢?于是Unicode编码就出现了。
一. Unicode编码
Unicode 没有规定字符对应的二进制码如何存储,它包含世界上所有的语言字符,字符顺序越靠后的,它存储所需的字节数就越多,所占的空间也就越大。如果统一成Unicode编码,乱码问题也就解决了,但是如果你写的全是英文的话(ASCII中本该用最少字节的字符),用Unicode编码比ASCII编码需要多一倍甚至更多的空间,这就会导致存储和网络传输时的一般数据会非常多,极大的浪费了空间。意识到这个问题后,UTF编码就诞生了。
二. UTF-8编码
Unicode Transformation Format,简称UTF,对unicode字符进行转换,以便于在存储和网络传输时可以节省空间。
UTF编码有3个版本:
- UTF-32 :使用4个字节表示所有字符。一定程度的减少了浪费。