完全解决MySQL5.7版本数据库不支持中文问题,并且用C#程序往数据库的VARCHAR(32)类型的字段中写汉字成功

本文介绍了解决MySQL5.7版本及其以上版本在Windows环境下出现中文乱码问题的详细步骤。通过修改配置文件、重启服务、调整数据库及表的字符集等操作,最终实现了数据库对中文的良好支持。

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

        今天,重写安装了MySQL5.7.27程序。安装成功后,默认创建了一个数据库和一张表,然后使用MySQL数据库自带的工具软件MySQL WorkBench 8.0想往数据库中插入中文信息,结果报千字符集错误提示:

花费了大致1天时间予以解决,解决完成后整理一下,借此机会,发表出来,希望可以帮助大家。

第一步:先查询数据库支持的字符集

1、登录MySQL数据库,输入SQL语句: show variables like 'character%'; 参考下图:

show variables like 'character%';

可以观察到character_set_client,character_setdatebase,character_set_server这三个属性都不是utf-8。

第二步:找到my.ini文件然后进行修改

        如果不知道my.ini文件在哪里,可以使用SQL语句:show variables like 'datadir%',查看my.ini文件在哪里。

show variables like 'datadir%';

从上图观察到my.ini在C:\ProgramData\MySQL\MySQL Server 5.7文件夹下。

找到后,使用记事本打开进行修改:

如图所示,66行处,添加客户端的字符集为utf8。77行处,添加服务端的字符集为utf8。

    66行添加了 

 default-character-set=utf8

     77行添加了 

character-set-server=utf8

 

 第三步:重启mysql服务

可以去任务管理器中,重启mysql的服务。

1、mysql服务在哪里找

     我的操作系统是WIN10,在计算机管理---服务和应用程序---服务---MYSQL57

2、关闭MYSQL57服务

3、重新启动MYSQL57服务

第四步:再次查看一下当前数据库的字符集

1、SQL语句: show variables like 'character%';

show variables like 'character%';

 可以观察到character_set_client,character_setdatebase,character_set_server这三个属性都已经是utf-8。

 

2、输入show variables like 'collation%';

show variables like 'collation%';

可以观察到 collation_connection,collation_database,collation_server 都是 utf8_general_ci

第五步:删除原先的数据库

          原先创建数据库时,默认选择的字符集是latin1,我就吃了这个亏,没有将原先创建的数据库删除,仅仅将原先数据库的字符集修改为utf8,无论是用MySQL WorkBench 8.0软件还是C#程序(连接字符串增加Charset=utf8)统统无效,折腾了1天也没有解决,实在没招时,想到一个网友说删除原数据库试试,我就试了一下,果然解决啦!

第六步:新创建数据库,字符集选择为utf8

       我是用MySQL5.7.27自带的MySQL WorkBench 8.0软件创建的。字符集选择Charset/Collation = utf8

第七步:MySQL WorkBench 8.0软件创建table1表,然后增加中文字段记录

        1、创建table1表

              table1表内有3个字段id,name和map。字段id和name都是VARCHAR类型的字段,id为主键。

        2、name字段增加中文名称

 

3、应用,鼠标点击Apply

     MySQL WorkBench 8.0软件插入中文名称字段成功。

第八步:C#程序增加中文字段记录

           string ConnectionStr = "server=localhost;port=3306;user Id=root;password=12345678; database=reservoirinfo ;Charset=utf8;Allow User Variables=True";

切记:连接数据库字符串中需要增加 Charset=utf8

 

参考文献:

解决MySQL5.7版本以上不支持中文问题
https://blog.youkuaiyun.com/GUDUzhongliang/article/details/105097422

Windows下mysql5.7及以上版本中文乱码问题
https://blog.youkuaiyun.com/shuiyuetianwy/article/details/89467930

关于如何修改mysql5.7的编码格式改为 UTF-8 的问题
https://blog.youkuaiyun.com/weixin_43663575/article/details/105871586?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

MySQL5.7永久统一编码/字符集为utf8(解决乱码)
https://blog.youkuaiyun.com/Meiko1024/article/details/104783126?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param


Windows下修改MySQL5.7的默认字符集(两种方法)
https://blog.youkuaiyun.com/qq_41855420/article/details/100189350?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值