itVincent Blog - Java Working Fun!

          技術(shù)引領(lǐng)時代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12

          Ajax中文亂碼問題及解決方法

          Posted on 2009-03-16 16:06 itVincent 閱讀(1494) 評論(4)  編輯  收藏 所屬分類: Ajax
          場景:

          使用jQuery的ajax方法提交ajax請求,代碼如下:
          1$.ajax({
          2    dataType : 'json'
          3    ,type : 'POST'
          4    ,url : 'http://localhost/test/test.do'
          5    ,data : {id: 1, type: '商品'}
          6    ,success : function(data){
          7        
          8    }

          9}
          );

          問題:

          提交后后臺action程序時,取到的type是亂碼

          解決方法:

          方法一:提交前采用encodeURI兩次編碼,記住一定是兩次
          1.修改以下代碼
          data:{id:1, type:encodeURI(encodeURI('商品'))}
          2.在后臺action里要對取得的字符串進行decode
          1String type = request.getParameter("type");
          2type = URLDecoder.decode(type, "UTF-8");

          方法二:ajax配置contentType屬性,加上charset=UTF-8
          在ajax方法中加入以下參數(shù)
          1contentType: "application/x-www-form-urlencoded; charset=UTF-8"
          使用其它js框架或者xhr都是差不多,設(shè)置header中contentType即可,
          這里關(guān)鍵是charset=UTF-8,如果沒有這個,是不行的,默認jQuery里的contentType是沒有的.
          還補充一下jQuery里對參數(shù)已經(jīng)進行了一次encodeURIComponent的處理

          *方法二在action里不需要進行decode,所以推薦使用此方法


          Feedback

          # re: Ajax中文亂碼問題及解決方法  回復(fù)  更多評論   

          2009-03-16 17:17 by wang.senyuan
          方法一為什么要兩次?

          # re: Ajax中文亂碼問題及解決方法  回復(fù)  更多評論   

          2009-03-16 17:43 by itVincent
          @wang.senyuan
          必須要兩次,不然decode了之后還是亂碼

          # re: Ajax中文亂碼問題及解決方法  回復(fù)  更多評論   

          2009-03-16 17:44 by 逝水fox
          用兩次的原因是 因為getParameter的時候Java自己會解析一層編碼 如果原文是中文 你提交的時候只做了一層編碼的話 Java自動解析可能會因為兩邊使用的編碼不一致而造成亂碼
          編碼兩次就沒有問題了 因為第一次編碼的結(jié)果不會有中文這些可能導(dǎo)致出錯的符號

          不過這樣做 記的"+"符號這樣傳會有問題

          # re: Ajax中文亂碼問題及解決方法  回復(fù)  更多評論   

          2009-03-17 00:00 by stevenhong
          對于無狀態(tài)的web來說,哪有不傳contentType的道理....
          主站蜘蛛池模板: 平定县| 吉水县| 玉林市| 吕梁市| 神农架林区| 察哈| 麻江县| 琼结县| 湄潭县| 迭部县| 云梦县| 泸水县| 金坛市| 抚顺县| 石门县| 青川县| 开鲁县| 满洲里市| 会同县| 海盐县| 招远市| 罗甸县| 灌云县| 大丰市| 金坛市| 黄骅市| 嘉荫县| 莱阳市| 台湾省| 山丹县| 开封市| 海盐县| 夹江县| 冷水江市| 双鸭山市| 绥宁县| 车致| 黄山市| 柳江县| 翁牛特旗| 大洼县|