在自己Ubuntu ECS上安装Mysql后,插入数据时发现因为编码而导致的中文显示乱码问题(如下图中疑问号处)
查询发现是因为通过apt-get命令下载的MySQL默认数据库编码格式是latin1(如下图),这种编码格式因为字节数的关系不能显示中文,所以需要把编码改为utf8以支持中文显示。
通过下图命令查看各编码设置情况(其中需要修改latin1):
解决方案:
1、查看版本信息(可登录MySQL后执行命令select version()查看):
- Linux系统环境 Ubuntu 14.04
- Mysql版本 5.5.53
2、修改MySQL配置文件–/etc/mysql/mysql.cnf:
a) 打开mysql配置文件:
vim/etc/mysql/my.cnf
b) 在[client]下追加:
default-character-set=utf8
c) 在[mysqld]下追加:
character-set-server=utf8
d) 在[mysql]下追加:
default-character-set=utf8
3、重启MySQL服务:
sudo service mysql restart
或是:
sudo /etc/init.d/mysql restart
4、查看编码修改是否成功(登录MySQL后执行status查看状态和编码):
5、可能有小伙伴说修改成功了,为什么我的原来创建的数据表还是显示不出中文?
这是因为原来创建的数据库和数据表的字符集编码已经默认设置的了latin
-通过use data;选择需要修改字符集编码的数据库,并修改(data换成自己数据库名)
-修改数据表默认编码(type换成自己数据表名)
mysql> alter table type character set utf8;
6、如果还有悲催地发现还是不能显示中文,并输入:
mysql>show create table type;
你会发现表中每个字段定义后面都有一个character set latin1,那么想要继续用的话只能一一修改字段:
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;
在用MYSQL中要注意:其中的数据库,表,列 对应的编码格式没有包含关系,最终决定内容以什么编码格式保存下来还是定义列时指定的编码(
Name
varchar(64) character set latin1 NOT NULL,),在建库和表时设置编码格式只是相当与为自己的下一级设置默认编码格式。