一、字符集设置
my.cnf [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8 create table ...... charset=utf8;
二、查看字符集(以下字符集为标准字符集,建议安装好系统后,先检查下字符集是不和下面结果一样)
mysql> show global variables like '%character_%'; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8 | 客户端字符集 set names 字符集 | character_set_connection | utf8 | 客户端字符集 set names 字符集 | character_set_database | utf8 | 服务端字符集 | character_set_filesystem | binary | | character_set_results | utf8 | 客户端字符集 set names 字符集 | character_set_server | utf8 | 服务端字符集 | character_set_system | utf8 | 系统字符集 | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+ 8 rows in set (0.00 sec) mysql> show global variables like '%collation_%'; +----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_general_ci | | collation_server | utf8_general_ci | +----------------------+-----------------+ 3 rows in set (0.00 sec)
三、改变客户端字符集
mysql> set names gbk;
四、数据库中文不乱码(utf8)
1、linux 客户端字符集(UTF8) 2、linux 客户端字符集(LANG="zh_CN.UTF8") 3、数据库 客户端字符集(UTF8) 方法1:set names 字符集; 临时生效 set character_set_client = utf8; set character_set_connection = utf8; set character_set_results = utf8; 方法2:--default-character-set=gbk; 在登录数据库时候指定字符集 方法3:在[mysqld]下添加: init_connect = 'set names utf8' 方法4:在my.cnf [client]下添加: default-character-set=utf8 4、数据库 服务端字符集 [mysqld] default-character-set = utf8 # 适合5.1及以前版本 character-set-server = utf8 # 适合5.5 5、具体数据库的字符集 6、表的字符集 7、PHP/JAVA程序字符集
五、生产场景,如何修改字符集(案例)
生产修改方法: 1、mysqldump备份(数据量大先导出表结构,sed替换),在导出数据备份; 2、在表结构中把字符集改了。例如:sed替换; 3、修改系统配置调整字符集生效; 4、mysql把表结构还原,再把数据还原; 5、开发人员把程序的字符集调整好;
六、设置MySQL字符集为utf8mb4 [数据库版本:mysql5.5.61]
# vim /etc/my.cnf [client] character-set-server = utf8mb4 [mysqld] character-set-server = utf8mb4 character-set-client-handshake = FALSE collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' [mysql] character-set-server = utf8mb4 mysql> select version(); +------------+ | version() | +------------+ | 5.5.61-log | +------------+ 1 row in set (0.00 sec) mysql> show variables like '%character%'; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+ 8 rows in set (0.00 sec) mysql> show global variables like '%collation_%'; +----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +----------------------+--------------------+ 3 rows in set (0.00 sec)