Windows系统下MySQL中文乱码问题

虽说在Windows的服务器上搭建Web应用一般很少用到MySQL,但是本人技术欠佳且囊中羞涩,MySQL因为免费性和学习成本较低则成了我的首选。
1.运行环境
近日,因为毕业设计需要搭建一个ASP.net的课程学习网站,里面用到MySQL数据库,而且导师还要求部署上服务器,无奈只能租一个腾讯云的Windows服务器进行部署。
数据库的版本是MySQL 5.7 Windows版,应用程序是 ASP.net MVC 5,跑在IIS8上面。
2.中文乱码
部署一切顺利,运行访问都没问题,但是一旦插入中文字符就变成‘???’。直觉告诉我应该是编码问题了。为了操作方便,本人这里用MySQL Workbench进行演示,实际上应该更多的使用命令行。
1.双击选中dump。
2.执行查询 show variables like ‘char%’;
在这里插入图片描述

可以看到图中的character_set_connection和character_set_server是lantin1,大概这就是中文出现乱码的原因了吧,接下来我们要把图中所有的lantin1改成utf8.

3.修改编码
网上随便一搜能搜到很多解决方案,大致分为两种:
通过 set character_set_server = utf8; 语句来进行设置,这种方法只是设置该数据库的字符集编码,MySQL中其他数据库的编码依旧是lantin1。就算修改全局 set global character_set_database=utf8; 重启之后还是会变回lantin1。
所以,我们需要采用另一种方法,通过修改MySQL配置文件来改变字符集编码。首先,在Windows下,我们需要找到一个 my.ini 的文件。网上很多教程都说它在MySQL文件夹下面,但这其实很容易误导,因为在MySQL安装时,程序文件和数据文件是分开存放的,很多人在MySQL文件夹下找不到my.ini就是因为它是作为数据文件放在数据文件夹里面。而这个数据文件夹在Windows下面是隐藏的。
要找到它,先随便打开一个文件夹,在路径栏里面输入 %ProgramData% 回车。进入隐藏文件夹,找到MySQL文件夹,进入找到MySQL Server 5.7文件夹,进入就能看到my.ini了。
在这里插入图片描述

这里只需要用记事本打开,然后修改一些东西就好了。如果对ini文件不熟悉的同学可以先百度补充一波ini的知识再操作。
1.在 [client] 节下面增加character-set-server=utf8
2.在 [mysqld] 节下面增加character-set-server=utf8
3.在 [mysql] 节下增加default-character-set=utf8
4.这里要注意的是,这个ini文件不是以’;‘标记注释的,是以’#‘标记注释的,所以在文件中可以看到很多#。在 [mysqld] 和 [mysql] 节下面本来就有character-set-server和default-character-set 配置,只不过用’#‘注释了,要把’#'去掉。
5.至于在哪一行加都无所谓,ini文件中哪行没有关系,只要在规定的节里面就好了。

4.重启MySQL服务
如果有用MySQL Notifier的话,直接在那里点restart就好了,如果没有的话,就用命令行吧。Win+R -> cmd -> net stop mysql -> net start mysql。

5.设置数据库编码
现在我们已经设置好了MySQL的默认字符集编码,接下来为了安全起见,我们还要继续检查一下数据库的字符集编码,用 show variables like ‘char%’; 查看选中数据库的字符集编码,看看 character_set_connection 和 character_set_server是否变成了utf8。如果没变的话,检查一下数据库的Collation是不是utf8。如果不是则需要设置成utf8。

ALTER SCHEMA DB_Name DEFAULT CHARACTER SET utf8 ;
set character_set_server = utf8;
set character_set_connection = utf8;

6.命令行操作
其实我个人是比较鼓励用命令行对MySQL进行设置的,不过考虑到效率和正确性,还是需要装上WorkBench进行一些辅助。
1.进入MySQL命令行模式
Win+R -> cmd -> cd 你安装MySQL文件夹里面的bin文件夹
mysql -u root -p
输入密码
2.查看数据库字符集编码
use 数据库名
show variables like ‘char%’;
注意每句都要有’;’
3.设置字符集编码
set character_set_server=utf8;
set character_set_connection=utf8;

4.退出
exit

7.参考文章
https://blog.csdn.net/u012410733/article/details/61619656/
https://www.cnblogs.com/houqi/p/5713176.html
https://blog.csdn.net/zkzk96871/article/details/78307774

发布了15 篇原创文章 · 获赞 2 · 访问量 4869

猜你喜欢

转载自blog.csdn.net/weixin_38138153/article/details/82958875
今日推荐