首先要明确字符集
和编码方式
的区别.
个人认为, 字符集
就是指许许多多的字符的集合, 比如全部中文就是一个字符的集合, 可以被成为中文的字符集
. 平时听到的Unicode
也是一种字符集
, 它的目标是囊括全世界所有的字符.
而编码方式
就是把字符集中的所有字符用计算机认识的符号给表示出来, 而且是要高效的表示出来. 对于Unicode
这个字符集
来说, 就有很多种不同的编码方式
, 在不同的场合可以使用不同的编码方式
, 怎么高效怎么用. 对于同一个属于Unicode
字符集的字符来说, 在不同的编码方式
中可以被设定为不同的编码. 而UTF-8
就是其中一种Unicode
编码方式.
UTF-8
最初被创造出来的目的主要是用来网络传输, 按照最初的设想:
Unicode -> UTF-8 -> Unicode
客户端 网络传输 客户端
关于这个的原因, 是因为UTF-8
是变长编码(关于这个请阅读相关的百度百科看看UTF-8是怎么编码的), 变长编码的好处在于网络传输的时候可以节约空间, 但是在计算机客户端处理的时候不方便. 因为如果想要在一串UTF-8
字符串中查找一个值的话, 只能从头遍历, 而在Unicode
这种定长编码中, 则可以使用类似于数组下标的方式查找. 所以UTF-8
适合网络传输而不适合于计算机处理.
总结一下:
字符集
是字符的集合, 编码方式
是表示(编码)字符集的方式. 不过在有些情况下, 某些字符集
的编码方式
就是他们自己, 所以会让人有些混淆. 比如GBK
既是字符集
同时自己也就是一个编码方式
. 而Unicode
会有UTF-8
, UTF-16
等一些不同的编码方式
.
Comments