jQuery.form.js進行表單提交,中文亂碼問題及解決

原文網址:http://www.verydemo.com/demo_c89_i26079.html
源於使用jquery,form.js進行表單提交時,發現保存到數據庫時失敗,而頁面都已經統一爲GBK編碼;在網上搜了一些答案大部分都是複製粘貼,並不能解決
文章內容如下:


目前處理一個項目需要使用到jquery的form插件進行jsp頁面中的form異步提交,我的java和jsp編碼都是GBK的,並且在web.xml中也設置了編碼格式爲GBK。可是就是這個原因讓我碰到了提交表單時出現中文亂碼的事情。
 
解決辦法:經測試OK!!!
沒有采用form插件(採用form插件解決辦法一樣直接對data進行二次轉碼),而是直接使用jquery的$.ajax()函數進行異步請求:
$(document).ready(function(){
    $('#submit').click(function(){
        var formData = $('#frm1').serialize(); //取表單值 並進行序列化;此時formData已經是亂碼了
        formData = decodeURIComponent(formData,true);//一次轉碼
        formData = encodeURI(encodeURI(formData)); //兩次轉碼
        $.ajax({
            type:'post',
            data:formData,//form表單數據集
            url:'/bshgl/bshczxxcj/admin/writeJbxx.jspx',
            success:function(){
                alert("保存成功!");
            }
        });
    });
});
後臺採用springMVC的annotation進行form表單數據接收
String test= URLDecoder.decode(object.getXxx(), "UTF-8");
..../*下面的代碼則是調用hibernate方法將數據保存到database中*/
 
得到的test字符爲中文。並且可以存入編碼爲GBK的數據庫中,木有問題。
 
而我目前急需解決的問題,後臺採用springMVC ,使用@ModelAttribute所接收的form值置於一個對象裏面即object中,如果我想將form中的值異步更新到數據庫中,那麼我就需要對所有的字段進行get和decode。這樣做的很麻煩,不知道各位有什麼好的辦法嗎?···
好吧,下面提供我的辦法··············但是目前這個辦法還不完善:
因爲使用的spring來進行bean管理,所以我現在使用的框架中,在entity層和bo層之間還有一個稱爲dto的一層,他的職責很簡單明確,只負責數據傳輸,每次entity從數據庫讀取數據,都先將數據copy到dto層,讓其去於view打交道,這裏就把URLDecoder.decode(object.getXxx(), "UTF-8");置於dto的所有字段的get,set方法中,這樣就不需要在Controller層再分別對每個字段進行get並decode了。     不完善的原因是········我在執行bean 拷貝的時候有部分數據沒有拷貝進行·····蛋疼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章