想要解决MySQL中文乱码首先必须了解下MySQL所支持的字符集,至于中文乱码出现的原因可以总结为:向数据库中插入的数据与数据库中的表所使用的字符集编码不同
一 . MySQL 中文字符集
常见支持中文的字符集有
GBK(双字节定长字符集)
得到了大多数系统的支持
GB2312(双字节定长字符集)
国标,收录了6763个常用汉字,比GBK少
GB 18030(不定长)
同样是国标,但数据库支持得较少
UTF-8(不定长 1至4 字节)
较为常用,被广泛支持
UTF-16 (不定长 2 或 4 字节)
采用16位编码的形式
曾经天真的以为,将所有字符编码都设为UTF-8便可,呵呵
后来发现UTF-8编码的 一个汉字 就要占用 3 个字节 ,而 GBK 编码的 一个汉字 只占用两个字节
因此当数据库是用来保存大量中文同时少量出现英文字符(即ASCII)码时,最好将该数据库的编码设为GBK(最为常见的情景就是保存小说了,大量的中文同时夹杂些英文字符)。这样就可以减少磁盘I/O,节省网络带宽。
当然,如果你的网站需要跨越多个语言区域的话,那UTF-8就是不二之选了。
二. MySQL中中文乱码的解决
记录一下自己中文乱码解决的过程
1. 打开数据库查看自己当前默认数据字符集的设置(在创建表的时候如果不制定字符集的话 MySQL将使用默认字符集来处理表或数据库)
输入
show variables like '%char%';