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筆記 閱讀(1078) 評論(0)  編輯  收藏 所屬分類: Java
           
          主站蜘蛛池模板: 东莞市| 昆山市| 永年县| 遂川县| 枝江市| 鹰潭市| 河北省| 漳州市| 丹凤县| 车致| 九寨沟县| 望江县| 昭平县| 开远市| 吉林省| 乐平市| 工布江达县| 高青县| 广汉市| 渝北区| 留坝县| 吴旗县| 阳江市| 正阳县| 佳木斯市| 交口县| 扶风县| 鹤峰县| 新民市| 定边县| 济南市| 乌鲁木齐县| 柳林县| 珠海市| 偏关县| 贵溪市| 仁化县| 积石山| 枞阳县| 浠水县| 南岸区|