Vincent Thinking

          All about Vincent's work and life

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            34 隨筆 :: 0 文章 :: 183 評論 :: 0 Trackbacks

          為了通用,從頭到尾都是utf-8.

          而webwork中JakartaMultiPartRequest對于多編碼的處理并不如意.

          apache的fileupload對于上傳文件名為中文的需要首先指定HeaderEncoding的編碼.
          而webwork對于MultiPartRequest的request并沒有設置encoding編碼
          詳見DispatcherUtils.java中 387行

          ???????? if ?(encoding? != ? null ? && ? ! MultiPartRequest.isMultiPart(request))? {
          ????????????
          try ? {
          ????????????????request.setCharacterEncoding(encoding);
          ????????????}
          ? catch ?(Exception?e)? {
          ????????????????LOG.error(
          " Error?setting?character?encoding?to?' " ? + ?encoding? + ? " '?-?ignoring. " ,?e);
          ????????????}

          ????????}

          如果沒有指定HeaderEncoding, 那么默認采用request的encoding,如果request也沒有指定則采用系統的編碼.
          這里并沒有指定request的encoding,往往導致上傳文件的名字亂碼.

          自定義一個MultiPartRequest,設定一下就ok了


          對于同時提交的表單域(form)參數,由于在form中指定的enctype的關系,并不能直接用request.getParameter()才取, 只能通過FileItem.getString()的方式.這里也是上面的問題, 取的CharacterEncoding是request中的,由于webwork的原因不一致.同樣需要指定一下.

          這樣form和上傳同時提交,參數,附件名都正常了 :)
          posted on 2006-04-25 18:24 Vincent Thinking 閱讀(1385) 評論(2)  編輯  收藏 所屬分類: JAVA

          評論

          # re: webwork 附件上傳中得一些問題 2006-08-08 17:11 黑洞
          "自定義一個MultiPartRequest,設定一下就ok了"——應該怎么定義啊?
          ihiyin@hotmail.com  回復  更多評論
            

          # re: webwork 附件上傳中得一些問題 2006-08-12 15:16 Vincent Thinking
          ServletFileUpload upload = new ServletFileUpload(fac);
          upload.setHeaderEncoding((String)Configuration.get(WebWorkConstants.WEBWORK_I18N_ENCODING));  回復  更多評論
            

          主站蜘蛛池模板: 江源县| 邻水| 沐川县| 乡城县| 鄂托克前旗| 庄河市| 曲靖市| 唐山市| 黄骅市| 孟连| 延川县| 兴文县| 兴山县| 林口县| 海晏县| 三门县| 商都县| 衡阳县| 卫辉市| 华坪县| 固安县| 灵宝市| 黄陵县| 绍兴市| 饶平县| 富平县| 珲春市| 湖南省| 平凉市| 安西县| 河东区| 西盟| 平定县| 营口市| 榆社县| 大兴区| 陇西县| 盈江县| 建始县| 天气| 亚东县|