MySQL的编码与字符集

编码与字符集

我们希望人为规定一个映射 于是字母和数字,还有一些常见的符号,被一一对应起来,ASCII编码使用一个字节来标识字符,基础符号只有128个,扩展符号也只有128个,也就只能表示一下英文字母和数字

这明显不够用,为了标识中文,出现了GB2312的编码格式;为了标识希腊语,出现greek编码格式;为了标识俄语,出现了cp866编码格式

为了统一它们,出现了Unicode编码格式,它用了2~4个字节去表示字符,这样理论上所有符号都能被收录进去,并且它还完全兼容ASCII编码(不同的是ASCII编码用1个字节来表示一个英文字母,而Unicode使用两个字节来表示一个英文字母)

D     ASCII:          01100100
D   Unicode: 00000000 01100100

可以看到上面的Unicode编码,前面都是0,虽然没有保留信息,但是还是占了一个字节,有点浪费空间。如果我们能做到把这部分空间省略掉,综合下来应该会节约不少空间,按照这个思路,就有了UTF-8编码