解决Navicat和MYSQL字符集不统一出现的中文乱码问题

本文详细介绍了在MySQL数据库中遇到的中文乱码问题及其解决方案,包括修改数据库编码格式、更新my.ini配置文件以及调整Navicat设置,确保中文字符正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习做一个登陆页面时候发现,在输入用户名和密码登陆之后,操作页面上显示的用户名并不是登陆账号,而是以问号的形式显示出来,在查询了数据库后发现,数据库中存入的内容就是??的形式。
第二格为uname的部分
查询各种资料之后了解到是中文乱码出现了问题,并开始着手解决。

更改Mysql数据库中的编码格式

我们使用MySQL命令行 show variables like’char%’; 对于它的编码格式进行查询
查询MySQL字符集
在网上的各种信息了解到对于这里可以使用:
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ; 进行修改,修改完成后达到了预期的效果:
修改成utf8字符集
修改后发现,当重启MySQL之后,之前更改的内容就被重置为初始的字符集情况,查询后了解到这个只是对当前窗口有效,而不是永久的。永久的更改需要修改MySQL下的my.ini配置文件

修改my.ini文件

my.ini文件的位置也让我困扰了很久,在MySQL的根目录下找到了my.ini,但是因为之前对my.ini进行过一些操作导致在my.ini文件中怎么更改都得不到想要的结果。最终决定重装MySQL并修改my.ini。

重装之后,根目录下并没有找到my.ini文件。查阅资料以后,在C:\ProgramData\MySQL\MySQL Server 5.7目录下找到了这个配置文件。(注意:ProgramData是一个隐藏文件夹)

在学习到其他大佬的修改方法是

[client]下添加:
default-character-set=utf8
[mysqld]下添加:
default-character-set=utf8

但是不但没有修改成功反而MySQL启动失败。报错default-character-set=utf8 命令是未知的
这又是什么情况呢?
看了资料之后,了解到这是版本的问题,MySQL5.5之后,[mysqld]修改方法变了:

[mysqld]下添加的应该为:
character-set-server=utf8
collation-server=utf8_general_ci

保存配置文件,重启服务,查询,MySQL中的都修改好了。
修改配置文件得到结果

更改Navicat中的编码格式

修改MySQL之后我们还需要修改Navicat中的内容得到二者的统一
修改Navicat的地方有数据库的连接属性、表的选项、单数据格的值:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改之后中文显示还是问号!!

使用MySQL字符集

接着我使用 show variables like’char%’; 在navicat中进行查询,发现跟MySQL的完全不统一,并没有都改成utf8的格式,操作了各种方法之后还是得不到想要的结果,我就在连接属性中勾上了使用MySQL字符集作为一个尝试
在这里插入图片描述
意想不到的是,这个方法真的改变了中文问号的问题,查询navicat的字符集也和MySQL统一了
在这里插入图片描述
最终中文不再是问号的形式:
在这里插入图片描述

字符集匹配是数据库导入过程中常见的问题之一,它可能导致数据在显示处理时出现乱码。要解决这个问题,首先需要确认数据源的原始字符集,然后在Navicat中创建新数据库时指定相同的字符集。具体操作如下: 参考资源链接:[数据库导入错误解决方案:从密码到版本匹配](https://wenku.youkuaiyun.com/doc/64534d83ea0840391e7795e0?spm=1055.2569.3001.10343) - 启动Navicat,连接到你的MySQL服务器。 - 在'连接属性'对话框中,找到'高级'标签页。 - 在'字符集'部分,你可以设置数据库连接字符集,确保它与原始数据源的字符集一致。如果确定原始字符集是什么,可以联系数据提供者获取该信息。 - 创建新数据库后,为确保数据库中所有表数据都使用正确的字符集,可以在创建表导入数据之前设置全局字符集参数。 - 在SQL编辑器中输入以下命令来设置全局字符集: SET NAMES 'utf8'; SET CHARACTER SET utf8; - 这样设置后,导入数据时就会因为字符集差异导致乱码问题。 如果在导入过程中遇到问题,或者数据量较大时,还应注意调整MySQL的配置文件中`max_allowed_packet`参数的大小,避免因超出设置的最大允许数据包大小而导致导入失败。完成上述设置后,重启MySQL服务使配置生效。 为深入了解字符集相关的更多知识,以及在导入过程中遇到的其他常见问题解决方案,可以参考《数据库导入错误解决方案:从密码到版本匹配》一书,其中详细介绍了这些内容并提供了实用的指导建议。 参考资源链接:[数据库导入错误解决方案:从密码到版本匹配](https://wenku.youkuaiyun.com/doc/64534d83ea0840391e7795e0?spm=1055.2569.3001.10343)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值