Unicode 和 UTF-8 有何区别?

这是我在知乎上找的,有兴趣的可以看看:https://www.zhihu.com/question/23374078

http://www.androidstar.cn/unicode%E5%92%8Cutf-8%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB/

Unicode 和 UTF-8 有何区别?

我自己的看法是:

Unicode是一套统一的字符集。收录了所有的字符。符号等。统一改为两个字节的所有字符的集合。

而UTF-8是一种编码规则,是一套以8位为一个编码单位的可变长度的编码,会将一个为1到4个字节



UTF-8是这样做的:

1. 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;

2. n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。

这样就形成了如下的UTF-8标记位:

0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
... ...

于是,”It's 知乎日报“就变成了:


作者:uuspider
链接:https://www.zhihu.com/question/23374078/answer/65352538
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

UTF-8 是一种 Unicode 的编码方式,主要作用对 Unicode 码的数据进行转换,转换后方便存储和网络传输。

在我们日常的程序中:encode与decode

      编码是把字符转换成二进制:encode。

        呈现在我们面前的是unicode。在python3中。存储在磁盘上的和网络上传输是UTF-8格式,内存中的是unicode。

  • 二进制 -> 转换 -> 字符串 需要解码 decode
  • 字符串 -> 转换 -> 二进制 需要编码 encode

python3 内存中使用的字符串全部是 unicode 码,但是网络传输的数据或者从磁盘读取的数据是把 unicode 码转换过的数据,通常情况下可能是 utf-8 格式的数据,所以如果从网络中读取或者磁盘中读取其实就是把 utf-8 格式的数据解码成 unicode 码数据,相反如果想把内存中 unicode 码数据存储到磁盘或者网络中需要对 unicode 码进行编码,通常可以采用 utf-8 的形式进行编码。


Unicode 和 UTF-8 有何区别?_第1张图片



你可能感兴趣的:(spider)