Windows下解决Mysql中文乱码问题

起因

做马哥12306项目的时候,在windows下使用cmd连接mysql,根据提供的sql脚本执行source xxx.sql生成数据库表,创建表虽然成功了(不过有warning),但是生成数据报错,一开始以为是版本不匹配(本地是8.0,提供的版本是5.7),又安装了docker装了5.7版本的mysql,发现依然报错。后面经过排查终于发现是因为windows下mysql默认字符集的问题(默认是gbk但是sql脚本是utf8),期间查阅大量博客解决了这个问题,记录一下。

报错

大概分为两种:

1.Data too long for column ‘full_name’ at row 1

2.Incorrect string value: ‘\xAD\xE5\xB7\x9E’ for column ‘end_station’ at row 105

其实看到第二个报错大概能猜到是字符集格式不对的问题,并且照着这篇文章修改了字符集格式,发现还是报错。然后从第一个报错入手,查到这篇文章说是把text字段修改成longtext字段,于是用navicat连了一下数据库,修改的时候发现数据库字段注释中文乱码,在这篇文章的提示下觉得可能还是中文乱码的问题,于是抱着试一试的态度再从mysql字符串编码格式问题方面解决一下。

解决方法

首先查看mysql字符编码情况

show variables like 'char%';

windows下mysql字符集默认编码
mysql默认编码

临时修改当前客户端使用的字符集

参照这篇文章,使用下面命令修改字符集格式为utf8

set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;

修改后的字符集就是utf8格式了
在这里插入图片描述
但是我后面经过检验发现,这种方法只能针对当前连接的客户端,关闭cmd重新打开后字符集又恢复为默认格式了。所以这也是第一次尝试的时候仍报错的原因。

永久修改mysql默认字符集为utf8

因为每次打开cmd连数据库都要重新设置字符集,太过繁琐,就想一劳永逸的解决字符串问题,也避免以后在windows下使用出现乱码情况。

查阅资料发现,通过docker安装的mysql可以按照这篇文章的方法进行解决,windows似乎可以通过修改inf文件来改mysql配置,等我以后用到再来更新吧!

参考文章

https://blog.csdn.net/you_you0329/article/details/117122034
https://blog.csdn.net/qq_34565436/article/details/121267448
https://blog.csdn.net/dy_miao/article/details/91461581

  • 23
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值