MySQL 字符集编码

一、字符集设置

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)

猜你喜欢

转载自www.cnblogs.com/miclesvic/p/10345235.html