直接看结果(有错误请告诉我)
版本
centos 8
mysql 5.7
修改字符集
记录下修改配置文件的方法
(谁知道我到底看了多少重复的文章)
步骤:
打开配置文件,分别在[mysql]、[mysqld]、[mysql]
添加默认字符集
———————————————————————
mysql> system vim /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
[mysql]
default-character-set=utf8
(这个的作用和set names是一样的 )
中文无法显示再现
mysql> select * from latin_utf ;
±—–+
| name |
±—–+
| ?? |
| ?? |
| ?? |
±—–+
3 rows in set (0.00 sec)
查看字符集,数据库和客户端,连接,返回结果的字符集不一样
mysql> show variables like ‘char%’;
±————————-±—————————+
| Variable_name | Value |
±————————-±—————————+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
±————————-±—————————+
8 rows in set (0.00 sec)
修改如下:
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from latin_utf ;
±——-+
| name |
±——-+
| 哈哈 |
| 张三 |
| 赵四 |
±——-+
3 rows in set (0.00 sec)
mysql> show variables like ‘char%’;
±————————-±—————————+
| 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 |
| character_sets_dir | /usr/share/mysql/charsets/ |
±————————-±—————————+
8 rows in set (0.00 sec)
修改已有数据表的字符集
假设原来的表的字符集是latin1,现在要修改成utf8
修改配置文件的办法只新创建的表或者记录生效,
不想丢弃原来的数据,需要将表先导出,调整字符集,在导入才可以:
步骤
1、导出表结构
[root@localhost mysql]# mysqldump -uroot -p –default-character-set=latin1 -d data_5>createtab.sql
2、手工修改原来的字符集latin为新的utf8字符集
[root@localhost mysql]# vim createtab.sql
CREATE TABLE
latin_utf
(
name
varchar(20)
DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、导出数据
[root@localhost mysql]# mysqldump -uroot -p –quick –no-create-info –extended-insert –default-character-set=latin1 data_5>data.sql
打开导出的数据表,修改set names为需要的字符集
[root@localhost mysql]# vim data.sql
4、使用新的字符集创建数据库
mysql> create database data_5_2 default charset utf8;
mysql> use data_5_2;
mysql> source createtab.sql;
5、导入数据
mysql> source createtab.sql;
关于字符集其它一些命令
———————————————————————
1、查看所用可用的字符集
mysql> show character set;
mysql> select * from information_schema.character_sets limit 3;
———————————————————————
2、查看字符集utf8的校对规则
mysql> SHOW COLLATION LIKE ‘utf8%’;
———————————————————————
3、校对规则命名约定:
_ci 大小写不敏感
_cs 大小写敏感
_bin 比较是基于字符编码的值
———————————————————————
4、例子:指定字符集gbk ,编码规则gbk_chinese_ci,比较字符A 与a是否相同
mysql> select case when _gbk ‘A’ COLLATE gbk_chinese_ci=_gbk ‘a’ COLLATE gbk_chinese_ci then 1 else 0 end\G
返回1
———————————————————————
方法来源:
[1] : 深入浅出mysql第九章
[2]: mysql导入导出sql文件https://www.cnblogs.com/yuwensong/p/3955834.html