首先要明确字符集编码方式的区别.

个人认为, 字符集就是指许许多多的字符的集合, 比如全部中文就是一个字符的集合, 可以被成为中文的字符集. 平时听到的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等一些不同的编码方式.

2017-10-20 17:5214