Spring+SpringMVC+MyBatis+easyUI整合基礎(chǔ)篇(八)mysql中文查詢bug修復(fù)

<h1>寫在前面的話</h1>
  在測試搜索時出現(xiàn)的問題,mysql通過中文查詢條件搜索不出數(shù)據(jù),但是英文和數(shù)字可以搜索到記錄宁仔,中文無返回記錄。本文就是寫一下發(fā)現(xiàn)問題的過程及解決方法峦睡。

<h1>問題定位過程</h1>

打開項目地址台诗,進(jìn)入書籍信息管理

初始化的時候,回傳的結(jié)果是所有數(shù)據(jù)進(jìn)行分頁后的信息記錄赐俗,這里可以看到書名為中文的記錄拉队,但是通過搜索欄的標(biāo)題欄進(jìn)行搜索的時候,問題出現(xiàn)了阻逮,如下:

沒有返回數(shù)據(jù)粱快!
一開始我是沒有注意到這是個bug的,因為剛開始整合叔扼,很多頁面的js都有些錯誤還沒改事哭,所以我感覺可能是js出了問題,就重新看了一下本頁面的js方法瓜富,沒有錯誤鳍咱。然后就試著用英文和數(shù)字進(jìn)行搜索,得到如下結(jié)果:

都有結(jié)果返回与柑,又嘗試著用其他中文參數(shù)進(jìn)行查詢谤辜,依然沒有數(shù)據(jù)返回。打開控制臺查看后端返回的結(jié)果价捧,如圖:

后端沒有報錯丑念,只是返回了空數(shù)據(jù)。到了這一步结蟋,已經(jīng)可以清楚問題出在哪里了脯倚,就是中文亂碼問題,導(dǎo)致傳入數(shù)據(jù)庫的參數(shù)不正確嵌屎,因此無法查出數(shù)據(jù)推正。
那么中文亂碼是出現(xiàn)在哪個步驟里呢恍涂?因此又開始繼續(xù)定位問題,首先是查看http請求植榕,是否在請求時就已經(jīng)出現(xiàn)中文亂碼的問題乳丰,打開控制臺,得到如下結(jié)果:

請求頭中的title字段依然為中文字段内贮,并沒有亂碼。那么中文亂碼就不是在前端出現(xiàn)的汞斧,可能是數(shù)據(jù)庫編碼或者后端代碼出現(xiàn)了錯誤導(dǎo)致這個問題夜郁。
登錄數(shù)據(jù)庫查詢數(shù)據(jù)庫編碼,如圖:

切換到當(dāng)前數(shù)據(jù)庫粘勒,查詢數(shù)據(jù)庫的編碼格式竞端,結(jié)果為utf8,數(shù)據(jù)庫編碼格式也是正常的庙睡,通過數(shù)據(jù)庫管理工具執(zhí)行如下sql也是可以查詢到結(jié)果的:

所以問題就一定出現(xiàn)在代碼或配置中事富,導(dǎo)致程序通過jdbc與mysql間的查詢出現(xiàn)中文亂碼。
查詢程序輸出日志乘陪,如圖:

整理后:

通過跟蹤程序日志發(fā)現(xiàn)傳入的中文參數(shù)一直到dao層都沒有亂碼统台,但是查詢的結(jié)果卻出現(xiàn)了差錯,問題就是jdbc連接了啡邑。

詳細(xì)解釋可以參照前文《Spring+SpringMVC+MyBatis+easyUI整合基礎(chǔ)篇(七)JDBC url的連接參數(shù)》贱勃。

<h1>總結(jié)</h1>
  處理過程總結(jié):發(fā)現(xiàn)查詢bug,定位問題谤逼,是否為前端js錯誤贵扰?是否為http請求時已經(jīng)中文亂碼?是否為后端http返回報錯流部?是否為數(shù)據(jù)庫編碼錯誤戚绕?是否為程序傳參亂碼?是否為jdbc連接錯誤枝冀?通過這一系列問題的提出與驗證舞丛,最終定位到問題并解決」看到這一過程瓷马,步驟挺多的,可能有人會說跨晴,不就是一個中文亂碼問題嗎欧聘,至于啰啰嗦嗦講一大堆嗎?我呢端盆,只是記錄一下bug修復(fù)的過程怀骤,及過程中遇到的小麻煩费封,這些都需要一一去落實的,不然怎么知道是不是js的錯蒋伦?是不是http請求傳參時就已經(jīng)亂碼弓摘?是不是數(shù)據(jù)庫編碼格式真的不是utf8......
  雖然步驟有些多但是有些問題其實只需要簡單的驗證即可知道結(jié)果,重要的是細(xì)心和耐心痕届,發(fā)現(xiàn)了問題就要解決韧献,要去解決就不能怕麻煩,也不能怕找不到問題研叫,無非是你的決心和方法锤窑,而且碰到的多了,自然而然定位問題就會快很多嚷炉,共勉渊啰。
結(jié)果
  通過jdbc與mysql數(shù)據(jù)庫建立連接時,如果數(shù)據(jù)庫的編碼格式為utf8申屹,那連接的URL也應(yīng)該為UTF-8的形式傳遞參數(shù)到數(shù)據(jù)庫才不會出現(xiàn)亂碼绘证,為了減少亂碼,建議數(shù)據(jù)庫的連接和傳遞的參數(shù)的編碼一致哗讥,詳細(xì)如下:

  jdbc:mysql://localhost:3306/ssm_demo_db?useUnicode=true&characterEncoding=UTF-8('&'符號可能會亂碼嚷那,所以可以用轉(zhuǎn)義字符&來替換)   

tip:最近開發(fā)任務(wù)慢慢增多,暫時就不更新了杆煞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末车酣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子索绪,更是在濱河造成了極大的恐慌湖员,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瑞驱,死亡現(xiàn)場離奇詭異娘摔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)唤反,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門凳寺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人彤侍,你說我怎么就攤上這事肠缨。” “怎么了盏阶?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵晒奕,是天一觀的道長。 經(jīng)常有香客問我,道長脑慧,這世上最難降的妖魔是什么魄眉? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮闷袒,結(jié)果婚禮上坑律,老公的妹妹穿的比我還像新娘。我一直安慰自己囊骤,他們只是感情好晃择,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著也物,像睡著了一般宫屠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上焦除,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音作彤,去河邊找鬼膘魄。 笑死,一個胖子當(dāng)著我的面吹牛竭讳,可吹牛的內(nèi)容都是我干的创葡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼绢慢,長吁一口氣:“原來是場噩夢啊……” “哼灿渴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胰舆,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤骚露,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缚窿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棘幸,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年倦零,在試婚紗的時候發(fā)現(xiàn)自己被綠了误续。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡扫茅,死狀恐怖蹋嵌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情葫隙,我是刑警寧澤栽烂,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響愕鼓,放射性物質(zhì)發(fā)生泄漏钙态。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一菇晃、第九天 我趴在偏房一處隱蔽的房頂上張望册倒。 院中可真熱鬧,春花似錦磺送、人聲如沸驻子。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崇呵。三九已至,卻和暖如春馅袁,著一層夾襖步出監(jiān)牢的瞬間域慷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工汗销, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留犹褒,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓弛针,卻偏偏與公主長得像叠骑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子削茁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容