Unicode 和 UTF-8
Unicode
是一种字符集合,现在可容纳 100 多万个字符。是统一编码,它建立了一个全世界统一的码表。每个字符(世界上的所有文字)对应一个不同的 Unicode
编码(在这张码表中都是唯一的),但是它只规定了符号的二进制代码,却没有规定这个二进制代码在计算机中如何编码传输。
UTF-8
是一种对 Unicode
的编码方式,它是一种不定长的编码方式,可以用 1~4 个字节(8-32位)来表示一个字符。
为何不直接使用 UTF-8 编码进行存储而要使用 Unicode 再转换成 UTF-8 ?
Unicode
的字符码,很少在计算机中直接用在存储和表达文本上。原因无他:太浪费空间了。
Unicode
字符码是32位,4个字节。平常使用的字符里,99%以上的字符都不会突破2个字节。为了节省空间,人们就对Unicode
的字符码再做二次编码,这就诞生了UTF-8
,UTF-16
,UTF-32
等编码标准。
除了UTF-32,UTF-8和UTF-16都是不定长的编码,他们的意思是按照编码规则,将一个Unicode
字符的字符码,编码成N个8位或者N个16位。至于N是几,要看具体的字符来定。UTF-32例外的原因是,他已经足够直接保存Unicode
的字符码了……
UTF-8、GBK、GB2312傻傻分不清楚?
UTF-8
编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(即三个字节)来编码。对于英文字符较多的论坛则用UTF-8
节省空间。
GBK
包含全部中文字符,UTF-8
则包含全世界所有国家需要用到的字符。
GBK
是在国家标准GB2312
基础上扩容后兼容GB2312的标准。