Raymond
          Java筆記
          問題:
          使用Struts的ActionForm接收到的中文全部是亂碼,例如提交過去的“測試”字符串,得到的是“??????è????”。開頭以為是傳統的encoding識別的問題,但是用各種編碼重新構造得到的byte[]數組,依然無法得到正確的中文。但是如果用普通的jsp來接收form的數據,中文是完全正常的。
          我開始覺得是struts的流程當中,錯誤地使用了編碼,以至最后得到的結果完全亂了。搜索了好多文章,總算找到一個比較接近的。
          解決方法:
          定義一個filter,filter只做一件事情,就是:
                request.setCharacterEncoding("UTF-8");
          在web.xml的filter mapping里,設定和struts的action同樣的mapping。

          解釋: Filter最先攔截web請求,在這里設置了正確的CharacterEncoding,接下來各個處理的組件就不會搞錯了。在沒有Filter的情況下,我的resin服務器上獲得的是null,估計struts不同的處理組件對null的解釋和處理不太一致,導致錯誤的產生。

          要注意我所有頁面都是UTF-8編碼,所以在filter里面定義了UTF-8,如果是其它的編碼,這里應該相應改一下。
          posted on 2006-01-19 23:28 Raymond的Java筆記 閱讀(1073) 評論(0)  編輯  收藏 所屬分類: Java
           
          主站蜘蛛池模板: 彰武县| 仙居县| 庆元县| 惠州市| 龙南县| 芷江| 泰兴市| 陇南市| 建宁县| 宜良县| 高雄县| 靖江市| 鄱阳县| 揭东县| 黄大仙区| 新巴尔虎右旗| 汾西县| 阿巴嘎旗| 凭祥市| 南溪县| 河南省| 永泰县| 巴彦县| 瓦房店市| 澎湖县| 恩平市| 临澧县| 孙吴县| 射洪县| 正蓝旗| 利川市| 南召县| 资讯 | 常德市| 蒙山县| 平定县| 招远市| 日土县| 子洲县| 永年县| 大田县|