近日使用mybatis做项目的时候碰到的问题,使用mybatis对数据进行模糊查询的时候,只能查询英文,而不能查询中文,即:输入参数为英文就成功,中文就查询不到结果。
在网上查了许多资料,总结下来就是以下几种情况:
问题一:
jsp页面,项目的properties,配置文件,数据库等的编码格式是否统一都为UTF-8。
解决方法:修改各文件编码格式,统一为UTF-8
问题二:
数据库安装后,编码没设置。
解决方法:修改配置文件,最简单的完美修改方法,修改mysql的my.cnf文件中的字符集键值(注意配置的字段细节):
1、在[client]字段里加入default-character-set=utf8,如下:
1
[client]
2
port = 3306
3
socket = /var/lib/mysql/mysql.sock
4
default-character-set=utf8
2、在[mysqld]字段里加入character-set-server=utf8,如下:
1
[mysqld]
2
port = 3306
3
socket = /var/lib/mysql/mysql.sock
4
character-set-server=utf8
3、在[mysql]字段里加入default-character-set=utf8,如下:
1
[mysql]
2
no-auto-rehash
3
default-character-set=utf8
修改完成后,service mysql restart重启mysql服务就生效。
再一查询OK了
问题三:
数据源在配置时,编码转换格式配置出错。
解决办法:
修改mybatis配置文件中配置数据源模块:
<property name="url" value="jdbc:mysql://localhost:3306/cloth?useUnicode=true&characterEncoding=UTF-8"/>
这里需要注意,一般时候,我们都习惯写成<property name="url" value="jdbc:mysql://localhost:3306/cloth?useUnicode=true&characterEncoding=UTF-8"/>,但是在XML文件中,它的编码规则决定要这么变换。
在xml文件中有以下几类字符要进行转义替换:
< |
< |
小于号 |
> |
> |
大于号 |
& |
& |
和 |
' |
' |
单引号 |
" |
" |
双引号 |