struts向資料庫插入中文資料亂碼問題
問題:從jsp頁面向資料庫新增記錄中文亂碼,英文正常-----編碼的問題弄得暈頭轉向···
解決方向:
一、myeclipse裡面各檔案的編碼格式不一樣?
windows--preferences--general--workspace--gbk;
windows--preferences--general--content Types--Text--預設編碼gbk;
找每一個編寫的jsp、xml檔案 頭部保證gbk;
最後不管用····
二、百度了下,想想向資料庫中插入是不是資料庫編碼有問題?
mysql裡查詢my.ini沒有,看資料要重新配置一個int檔案,有點難搞···最終失敗,但是找到了
show variables like 'character%';
set character_set_database=gbk等等,命令列改了半天,發現傻了,關了重開一個dos視窗又回去,想想可能也沒法改,每次mysql啟動都預設載入的預設配置;
也找了些資料在myeclipse裡面改----BaseDao裡面把建立資料庫連線的url後面加上?useUnicode=true&characterEncoding=UTF-8,我要用gbk,這什麼鬼····?characterEncoding=gbk,還是木有用啊←_←!
最後發現蛋疼,我直接看一下insert語句到底是啥不就知道是哪的編碼問題·····於是打印出insert裡面的引數發現就是亂碼????,終於確定了跟資料庫沒關係
三、那就只能是myeclipse裡面我寫的東西有問題啦
問題集中到user.getName()取頁面中輸入的中文為什麼亂碼?
又開腦洞:1、難道是瀏覽器有編碼方式和我寫的東東衝突了 導致亂碼?
那真的GG了···換瀏覽器--不行,仔細想想,如果瀏覽器問題,那顯示資料也應該不行,顯示是正常的 沒毛病!
2、解決了問題的方法
getName()要取jsp頁面提交的資料,而得到資料就亂碼了,範圍很小了,就只能是提交有問題,post問題麼?post到action的問題麼?
經查詢,post提交方式可以通過設定編碼方式正確識別中文,----<constant name="struts.i18n.encoding" value="gbk"/> 成功顯示中文!!估計是提交到action
struts.xml中action的編碼問題,struts-core裡面org.apache.strtus2裡default.properties中關於編碼預設為UTF-8,至此瞭解,雖然全部頁面都gbk也不行·····
3、那換成get呢?
果斷又不行了·········亂碼 查資料,有人說post可以指定編碼,get不起作用,一是get通過tomcat web.xml中預設編碼作用,二是get傳遞也對uri進行了編碼,要轉換編碼
算了 我安靜的用post玩一會先