1.修改MySQL默认编码
看下面的博客:
https://blog.csdn.net/weixin_45525272/article/details/107985386
2.mysql中文乱码问题三层因素:
因素1: MySQL自身的设计
【实验步骤1】:
mysql> show variables like 'character%'; • 1
查看所有应用的字符集
【实验步骤2】:
$ mysql -uroot -p123456 --default_character_set=gbk
指定字符集登录数据库
mysql> show variables like 'character%'; • 1
影响了与客户端相关联的 3处 (最外层)
在这种状态下执行use mydb2;
mysql> select * from employee;
查看输出,会出现乱码。
原来的三条数据,是以utf8的形式存储到数据库中,当使用gbk连接以后,数据库仍按照utf8的形式将数据返回,出错。
【实验步骤3】:
在该环境下插入带有中文的一行数据。
mysql> insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(10,‘张三’,1,‘1988-09-21’,15000,‘2012-06-24’,‘一个老牛’);
ERROR 1366 (HY000): Incorrect string value: ‘\x80\xE4\xB8\xAA\xE8\x80…’ for column ‘resume’ at row 1
因素2:操作系统的语言集
linux操作系统 是一个 多用户的操作 [root@localhost ~]# cat /etc/sysconfig/i18n LANG="zh_CN.UTF-8" 操作系统的菜单按照zh_CN显示, 文件存储按照utf8 linux操作系统语言环境 和 用户的配置的语言环境LANG 相互影响 [mysql01@localhost ~]$ echo $LANG zh_CN.UTF-8
【实验步骤4】:
修改用户下的.bash_profile 中的LANG,屏蔽操作系统的LANG设置。再查数据库
mysql> select * from employee;
结论: 用户的LANG设置,影响了应用程序的语言环境,导致myql的语言环境发生了改变:
mysql> show variables like 'character%'; • 1
在此环境下,检索中文会出现乱码。
【实验步骤5】:在上述环境之下,向数据库中插入中文。
insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(5,‘张三疯’,1,‘1987-05-21’,15000,‘2014-06-24’,‘一个老牟’);
数据能插入到数据库中,没 有 报 任 何 错 误!但显示不正确。