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
           
          主站蜘蛛池模板: 驻马店市| 壶关县| 炎陵县| 仙桃市| 广河县| 灵石县| 苗栗市| 瓮安县| 曲松县| 盘锦市| 五家渠市| 曲麻莱县| 建始县| 黎城县| 宁都县| 博罗县| 疏附县| 休宁县| 紫云| 汤原县| 德阳市| 宣威市| 张北县| 台中县| 台南县| 绿春县| 屯留县| 和田县| 黔南| 白城市| 吕梁市| 改则县| 乡宁县| 康马县| 麟游县| 将乐县| 长岭县| 孝昌县| 建阳市| 道孚县| 胶州市|