java技術研究

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          關于tomcat的編碼問題

          webwork的xwork.xml里面配置的轉發帶中文參數就是亂碼,這里的vcStatus是中文就亂。 
          <result name="success" type="redirect">
          /haplayadmin/initManageThread.action?vcStatus=${vcStatus}
          </result>

          1.我們都知道tomcat的默認編碼是iso8859
          2.webwor的默認編碼是iso8859,而webwork.i18n.encoding = utf-8這里配置的是希望轉換成的字符集
          3.在轉換前的action中得到的參數,如果是以get方式得到的那么應該是iso8859(tomcat進行了從utf-8(這個是頁面中的contentType決定的)到iso8859的轉換)。
          如果是post方式得到的則應該是utf-8(因為webwork把從tomcat得到的參數setCharactorEncoding為webwork.properties配置的字符集,通常我們設置的和頁面字符集一樣)。
          4.這樣我們在以redirect的方式轉換到actionB的時候顯然是以get方式提交了,webwork會執行從iso8859到utf-8的轉換(webwork.properties里面的配置進行轉換)。這時就會出問題:假設前面是以get方式提交的,那么就會從iso8859到utf-8,記住這時我們得到了utf-8編碼的字符集.
          5.接著,tomcat很老實的把參數按照頁面中contentType設定的值(這里是utf-8)轉換成iso8859字符集,由于是get方式提交則不會經過webwork的setCharactorEncoding,那么我們得到的是iso8859字符集。
          6.在轉發后的action中就得到了iso8859編碼的字符集,我們只要把這個字符集進行從iso8859到utf-8的轉換即可得到需要的參數。

          7.然而假設第三步假設是以post方式提交的,我們則得到的是utf-8的字符集編碼,在第四步webwork在執行從iso8859到utf-8的轉換中就把參數的原始字符集寫錯了,因為我們得到的是utf-8的原始字符集而不是iso8859。這時轉換編碼的參數永遠也轉不回來了。

          注:實際上webwork在解析xml中的轉發表達式的時候進行的字符集轉換,在其他地方則不會出現這樣的問題。

          posted on 2007-05-29 16:52 小秦 閱讀(1946) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 航空| 门源| 武宣县| 鄂伦春自治旗| 崇阳县| 南安市| 香格里拉县| 连城县| 高陵县| 新河县| 弋阳县| 长沙市| 乐都县| 昭觉县| 裕民县| 宁蒗| 沙雅县| 新源县| 澄城县| 江安县| 醴陵市| 肇州县| 垣曲县| 永昌县| 宁明县| 德昌县| 安徽省| 个旧市| 繁昌县| 南丹县| 澜沧| 绥芬河市| 永登县| 南开区| 余姚市| 红安县| 桂东县| 荣昌县| 云阳县| 石泉县| 宣威市|