解决mysql插入中文变成问号?的问题

程序执行插入语句

在这里插入图片描述

问题:数据库中的记录,出现中文变成问号 .

当通过程序或者mysql客户端插入数据的时候出现中文变成??这种类似的乱码时,多半是由于数据库编码的问题
在这里插入图片描述

解决办法:

1.查看数据库的编码是否为utf-8,如果不是,则将数据库的编码改成utf-8

create database '数据库名' default character set utf8 collate utf8_general_ci;

2.建立表的时候也要指定其字符集,例如

CREATE TABLE `role` (
  `id` INT(11) NOT NULL COMMENT '编号',
  `role_name` VARCHAR(30) DEFAULT NULL COMMENT '角色名称',
  `role_desc` VARCHAR(60) DEFAULT NULL COMMENT '角色描述',
  PRIMARY KEY  (`ID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

3.如果以上条件都满足了,都还是会出现插入中文变问号的情况,那么需要查看字符设置

进入cmd,登录mysql,查看数据库的字符情况,然后输入show variables like 'char%';

在这里插入图片描述

问题:字符设置不正确

​ character_set_database和character_set_server的value为latinl

如果要让中文能够插入,则需要显示的这些value都是gbk或utf8
在这里插入图片描述

修改mysql的配置文件

找到mysql安装的路径,修改my.ini文件,添加一下内容:

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld] 
character_set_server=utf8
collation-server=utf8_general_ci

以下是我的my.ini配置内容

在这里插入图片描述

打开服务,找到mysql服务,重启服务,则配置会生效

在这里插入图片描述

再次打开cmd,进入mysql,查看字符设置是否改变

在这里插入图片描述

再次执行程序或者mysql语句,发现中文变问号的问题解决了
在这里插入图片描述

Logo

更多推荐