IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 记录:为何Java执行插入sql,保存进数据库的中文内容会自动变成问号?【解决方案】 -> 正文阅读

[Java知识库]记录:为何Java执行插入sql,保存进数据库的中文内容会自动变成问号?【解决方案】

👨?🎓作者:bug菌

??博客:CSDN掘金

💌公众号:猿圈奇妙屋

🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。

🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。

一、环境说明🔥

环境:jdk1.8 + springboot 2.3.1 + mybatis-plus3.2 + mysql5.6?

二、排错分析🔥

? ? ? ?我coding着正快要进入忘我境界,突然我的消息一直弹屏,我还是抓紧看看具体发生了啥吧。

于是我打开vx,看到群消息后,呆住!离谱????

bug菌:"心想,不可能是我的问题的。"

小伙伴:"bug菌啊,为啥我输入的中文保存后变成一串问号了啊??我也没做字符转码呀,今天就是这个情况。你赶紧看看,肯定又是你写的bug。难怪取名叫bug菌,名副其实!。"

?bug菌:"这么离谱?我啥也没变动啊,接口照旧呀,之前测了不是都正常嘛。怕不是要冤枉好人。"

bug菌:"深吸了口气,好像想到了点啥?"

bug菌:"那你再测一下别的新增接口,看看中文是不是也乱码?是只中文保存后变成了' ??? ',还是都变成' ??? '。"

小伙伴:"别的接口也是!变成了不固定的问号。"

小伙伴:"就是中文,输入的数字,字符串都不变。"

bug菌:"好的,基本了解,这是后端bug,我马上定位问题并修改bug"。

bug菌正火急火燎的赶往事故发生地。

...

? ? ? ?小伙伴们,你们光到这儿,能精准定位问题是啥不?如果你心里没有啥解决方案,那么跟随? bug菌过来,看看他是如何一步步排查到事故现场把!

我首先打开[ idea ]编辑器,运行[ debug ]模式。

第一步:先确定,接口参数传到后端再到接口逻辑层中间是否有被转义?

排查下来并没有,且sql执行也显示中文,如下是sql执行过程:

第二步:排查一下,数据库数据保存情况,是否中午变问号了?

ok!很明显,插入的中文乱码变成了一堆问号了。

第三步:确定idea编辑器的编码格式 与数据库的编码格式否是一直?

排查下来,设置的都是utf-8 编码。那就是不是编码格式问题。那还可能是啥问题呢?

第四步:排查下来,事故肯定是发生在sql执行上,我就想,sql执行时啥设置会对它有影响?

真相大白!大家请看:发现了什么没有?

? ? ? ? 我的数据库连接配置竟然变了!!被谁给改掉了?给我站出来。查看git提交记录才发现,原来是自己,我昨晚由于定位另一个bug临时给改了,忘了把注释放开。破案!

到这儿,你们知道这个事故是啥了嘛?小伙伴们。

三、解决方案🔥

? ? ? ?在你的配置文件中对数据库的url地址最后拼接一下如下这串,bug解决!!

&useUnicode=true&characterEncoding=utf-8

拓展:数据库连接url拼接这串有啥作用呢?

字面解读:使用Unicode字符集并且设置字符编码为utf-8。

其实真正它的作用分两方面:

1、往数据库插入数据时:

????????数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。

2、从数据库取出数据时:

????????数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。

实际添加截图:?

?????????最后咱们重启项目,再随便通过一个新增接口试试,问题解决没有!

????????很明显,中文输入保存正常,接口获取时也正常,一切正常。

完美,收工!perfect!!!

前端:bug菌,效率真高,花了一个小时就解决了!真棒o( ̄▽ ̄)d good

我:客气客气(这是在阴阳怪气?)

... ...

? ? ? ? ?好啦,以上就是的解决java保存中文变成问号的解决方案啦。如果对你有所帮助,还请不要忘记给bug菌[?三连支持?]哟。如果想获得更多的学习资源或者想和更多的技术爱好者一起交流,可以关注我的公众号『猿圈奇妙屋』,后台回复关键词领取学习资料、大厂面经、面试模板等海量资源,就等你来拿。


四、文末🔥

????????如果你还想要学习更多,小伙伴们大可关注bug菌专门为你们创建的专栏《bug调优》,都是我一手打下的江山,持续更新中,希望能帮助到更多小伙伴们。

? ? ? ?我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!

????????最后送大家两句我很喜欢的话,与诸君共勉!


??做你想做的人,没有时间限制,只要愿意,什么时候都可以start。

🍀你能从现在开始改变,也可以一成不变,这件事,没有规矩可言,你可以活出最精彩的自己。


????

💌如果文章对您有所帮助,就请留下您的吧!(#^.^#);

💝如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(?′?‵?)づ╭?~;

💗如果对文章有任何疑问,还请文末留言或者加群吧【QQ交流群:708072830】;

💞鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);

💕版权声明:原创不易,转载请附上原文出处链接和本文声明,版权所有,盗版必究!!!谢谢。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 17:59:01  更:2022-05-24 18:02:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:37:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码