請忽略標題那一堆亂七八糟的文字哈,那是爲了方便剛入門的新手或菜鳥搜索到相同問題加上的關鍵詞
前情提要:
最近宅在家裏複習SSM,準備春招,寫了個小項目練手 不巧就遇到了一個挺容易讓人忽略的問題。
遇到的問題:
爲什麼這裏插入的中文都會變成亂碼呢?究竟是前端的問題還是後端的問題?
於是我帶着疑問對代碼進行了第一遍檢查
後端情況:
不對啊,後端編碼過濾器我早就配置好了呀,怎麼還是有亂碼,那我就去看看前端吧
前端情況:
嗯?前端也沒問題? 那我看看服務器日誌吧
服務器日誌:
什麼?服務器接收到的參數居然沒有亂碼??那我去檢查下數據庫吧
數據庫情況:
嗯? 問題好像發現了,就是數據庫的問題
那麼我們先往數據庫裏手動插入一箇中文值試一下
哎呦 果真報錯了 在查詢了相關資料後發現問題所在
問題原因1:
原因是創建mysql數據庫的時候沒有仔細看,使用了mysql的默認字符集latin1,將他們修改爲utf8之後就可以了。
一波未平一波又起:
現在數據庫中插入的中文字符能夠正常顯示,那麼爲什麼我在網頁中提交表單的值到了數據庫中仍然是亂碼呢?
在好一通檢查之後發現,用慣了oracle的我,在寫mysql連接url的時候犯的一個錯誤導致了這個問題。
問題根源:
數據庫連接時忘記添加characterEncoding參數,因而在持久化時會把項目並不知道用什麼格式與數據庫進行交流。