1. 程式人生 > >struts向資料庫插入中文資料亂碼問題

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玩一會先