一、问题
使用mybatis持久层框架,执行sql语句,插入到mysql数据库中,发现中文乱码
二、可能导致原因
1、mysql本身的编码配置,即:mysql.ini文件没有配置好
2、代码层面,即:连接数据库的jdbc编码,写法不对
三、顺藤摸瓜
1、试一下第一种解决方案:看一下mysql.ini文件,
本人电脑的mysql.ini文件位置是在:C:\ProgramData\MySQL\MySQL Server 5.7
打开文件,第66行和99行,都加上utf8,记得放开注释,即去掉 # 号,
修改完成之后,保存,并重启mysql服务。
如何重启mysql服务呢?
1、使用windows + r 快捷键,打开运行窗口,输入services.msc 命令,点击确定
2、打开服务界面之后,找到mysql服务
3、右击鼠标,选择 重新启动,即可
4、重新执行一下,mybatis的程序代码,往数据库中插入一条数据,发现中文不再乱码了。
5、既然第一种方案,可以解决,那说明第二种方案,应该是没有问题的,结合网上的各种解决方案,我这边把第二种也放上来。
<!-- 1. 数据源 : DriverManagerDataSource --> <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/uct?useUnicode=true&characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value=""/> </bean>
能够看到在链接的url后添加了useUnicode和characterEncoding的值,设定为utf-8
这里有一点须要注意的是,在xml配置文件中,须要将’&‘符号转义,因此这里要写成’&’
若是是在配置文件中,则没法转义,应为: xxxx.jdbc.url=jdbc:mysql://127.0.0.1:8080:3306/uct?useUnicode=true&characterEncoding=UTF-8
注意注意就是不要直接对以前失败的表insert,那样还是错的,可以新建表或者修改原表的字符集!!!