近日使用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文件中有以下幾類字符要進行轉義替換:
< |
< |
小於號 |
> |
> |
大於號 |
& |
& |
和 |
' |
' |
單引號 |
" |
" |
雙引號 |