血的教训 之 db.properties配置文件
sb的我竟然能因为乱码问题折腾一天,原因也是让我意想不到:错误出现现在mysql数据库的url地址配置上😭。
其实在配置mysql的url的时候由于我记得不是特别牢,还特意在网上搜了url配置,并复制使用了某位博主的代码。
jdbc:mysql:///mybatis?useSSL=false&useUnicode=true&charsetEncoding=utf-8
就是它,我乱码的罪魁祸首😭。
细心的你就会发现错误了,characterEncoding
才是正解。
额,没什么可说的,就是希望那位博主别再误人子弟了😒。
一、解决流程
- 先检查了自己是否配置了request.setCharacterEncoding("utf-8");
- 没问题后,确认是否是post请求的方式,后面还特地用函数检查String method = request.getMethod();
- 观察是在什么阶段发生乱码的。经过数据打印,发现在sqlSession.commit();前都不会乱码 🤔
- 在解决无果后,开始检查所有文件的编码格式,IDEA的setting中的File Encodings全部配置为utf-8,使用手动配置的Tomcat8.5,清除缓存等等无脑操作,还是无果
- 晚上回来,静下心来,分析可以发现在commit前没有问题,但到数据库的数据始终是乱码的,错误可能发现在mysql数据库上✨
- 先是检查数据库、表创建是的编码——是utf-8。然后是,db.properties配置文件,乍一看没什么问题。于是又在网上查看mysql数据库参数配置,一行一行的对比发现了错误。哎!!
二、代码 —— 牢记
在此做一下记录:
#Connect/J version 5.X
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///mybatis?useSSL=false&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf-8
username=root
password=root
#Connect/J version 6.X以后的版本,适合于MySQL8.x新版本
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///mybatis?serverTimezone=UTC&useSSL=false&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf-8
username=root
password=root
三、注意事项
mysql的url相关配置可以根据自己的实际应用场景添加其他参数配置。
1、mybatis中
注意在mybatis-config.xml中要将<properties resource="db.properties"/>
放在<configuration></configuration>
内的最前面。
四、经验教训
网络的水很深,我有点把握不住。自己经过测试的代码,才是自己的😢。