mysql报错乱码_mysql中文乱码或者中文报错

当出现中文乱码或者执行包含中文的语句报错时,十有八九就是编码的问题,我们可以执行下面语句查看编码:

SHOW VARIABLES LIKE ‘%char%‘

显示

d2a5717cd16c61c06e9e5ac4b4cdb93a.png

其中character_set_server是服务器编码:latin1,这个也是mysql默认的编码,我们可以使用set命令修改这个编码:

SET character_set_server = utf8;

但是这个set修改是临时的,如果mysql重启之后,这个编码会重新设置成默认编码latin1

所以我们最好是去修改配置文件中的默认编码:

先进入mysql的主目录,在目录下会有个my.cnf文件,打开查看里面有没有mysqld节点配置,我这里是没有的,里面是:

!includedir /etc/mysql/conf.d/!includedir/etc/mysql/mysql.conf.d/

想必这两个指的是mysql配置文件的目录,然后分别进入这两个目录,发现/etc/mysql/mysql.conf.d/目录下的mysqld.cnf文件里有mysqld节点配置,然后将上面配置加上(存在则修改)即可:

8d9ae621b3c7e3df483406808d6cf917.png

如果都没有找到mysqld节点,那直接在my.cnf中加上mysqld节点,再将上面的配置加上(存在则修改)即可

修改完成需要重启下mysql服务:service mysql restart

注意,这里修改之后,只对重新创建的表才能生效,对于已经存在的表,我们修改手动修改它的编码:

--utf8_general_ci表示utf8编码,latin1_swedish_ci表示latin1编码,是默认编码--查看表编码

SELECT TABLE_COLLATION FROM information_schema.`TABLES` WHERE TABLE_NAME=‘table_name‘;

--查看列编码

SELECT COLLATION_NAME FROM information_schema.`COLUMNS` WHERE TABLE_NAME=‘table_name‘ AND COLUMN_NAME=‘column_name‘;

--修改表编码

ALTER TABLE [表名] CONVERT TO CHARACTER SETutf8;--修改列编码

ALTER TABLE [表名] MODIFY [列名] [类型] CHARACTER SET utf8;

另外,如果修改了mysql的服务器的字符编码为utf8,但是还是现实中文乱码,那么可能是客户端编码问题,执行 SHOW VARIABLES LIKE ‘%char%‘ 查看character_set_client参数是否是utf8,如果不是,则在配置文件中添加节点:

[client]default-character-set=utf8

原文:https://www.cnblogs.com/shanfeng1000/p/12269556.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值