【MySql数据库常见字符集介绍】
在互联网环境中,使用MySql时常用的字符集有:
【如何选择合适的字符集】
1.如果处理各种各样的文字,发布到不同语言的国家地区,应选Unicode字符集,对MySQL来说就是UTF-8(每个汉字3字节),如果应用需要处理英文,仅少量汉字使用UTF8更好(中英文混合)。
2.如果只需要支持中文,并且数据量很大,性能要求也较高,可选择GBK(定长:每个汉字占双字节,英文也占双字节),如果需要大量运算,如:比较排序,定长字符集,更快,性能更高。
3.处理移动互联网业务,可能需要utf8mb4字符集。
【查看当前MySQL系统支持的字符集】
使用“ show character set; ”来查看:
查看当前MySQL的字符集设置情况
使用" show variables like 'character_set%' "
| Variable_name | Value |
| character_set_client | utf8 |----------客户端字符集
| character_set_connection | utf8 |----------连接字符集
| character_set_database | utf8 |----------数据库字符集,配置文件指定或建库建表指定
| character_set_filesystem | binary |----------
| character_set_results | utf8 |----------返回结果字符集
| character_set_server | latin1 |---------服务器字符集,配置文件指定或建库建表指定
| character_set_system | utf8 |
【使用"set names ****"解决乱码问题】
我们先在MySQL默认创建的test数据库中建立一个"user"表
然后我们来为user表添加一些数据:
会发现,插入英文都正常,但是一旦插入中文会出现“ Incorrect string value:"xD5xC5xC8xFD" for column 'name' at row 1 ”的错误。
我们先查看一下其数据库test的字符编码,默认是Latin1编码的
再查看一下表user的字符编码:同样是latin编码
对应于数据库和表均为latin1编码的情况,如何可以插入中文数据呢?如下:
使用"set names latin1;"设置编码,然后插入中文字段即可。
接下来查询一下,关闭cmd,重新打开一个cmd重新登录,进行查询操作。
发现查询出来又是乱码,我们再处理一下,
于是可以得出,要根据被查询的数据库和表的本身的字符编码来进行对应的" set names **** "进行处理。
再来看看"set names ****"的具体作用:
先看下数据库test的默认情况下的字符集设置情况:
使用“set names utf8;” 再看下结果: