每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
          最近關心的內容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(23)

          隨筆分類(240)

          隨筆檔案(219)

          文章分類(9)

          文章檔案(9)

          收藏夾(15)

          java link

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          key words: 腳本編碼 中文亂碼 js
          在jsp中,通過js訪問java代碼比較容易(不過,也有缺陷,比如java代碼的聲明必須先于js),反過來則不方便,網上看到有通過其他組件的方式來做,感覺也不是很好,其實平時用的更多的是在js中有中文編碼,而需要到下一個jsp頁面中得到這個對應的值。

          js中有函數escape和unescape,可惜的是java.net.*中的編碼和解碼與js的不一致,所以他們不能協同工作,有一個方法就是在java中重新實現一遍js里對應的方法,代碼如下:
          /**
          ?*?java版本的escape和?unescape[對應javaScript里的函數]
          ?
          */
          public?class?EscapeUnescape?{
          ????
          /**
          ?????*?escape?==>?escape
          ?????*?
          @param?src
          ?????*?
          @return?String
          ?????
          */
          ????
          public?static?String?escape(String?src)?{
          ????????
          int?i;
          ????????
          char?j;
          ????????StringBuffer?tmp?
          =?new?StringBuffer();
          ????????tmp.ensureCapacity(src.length()?
          *?6);
          ????????
          for?(i?=?0;?i?<?src.length();?i++)?{
          ????????????j?
          =?src.charAt(i);
          ????????????
          if?(Character.isDigit(j)?||?Character.isLowerCase(j)
          ????????????????????
          ||?Character.isUpperCase(j))
          ????????????????tmp.append(j);
          ????????????
          else?if?(j?<?256)?{
          ????????????????tmp.append(
          "%");
          ????????????????
          if?(j?<?16)
          ????????????????????tmp.append(
          "0");
          ????????????????tmp.append(Integer.toString(j,?
          16));
          ????????????}?
          else?{
          ????????????????tmp.append(
          "%u");
          ????????????????tmp.append(Integer.toString(j,?
          16));
          ????????????}
          ????????}
          ????????
          return?tmp.toString();
          ????}

          ????
          /**
          ?????*?unescape?===>js
          ?????*?
          @param?src
          ?????*?
          @return?String
          ?????
          */
          ????
          public?static?String?unescape(String?src)?{
          ????????StringBuffer?tmp?
          =?new?StringBuffer();
          ????????tmp.ensureCapacity(src.length());
          ????????
          int?lastPos?=?0,?pos?=?0;
          ????????
          char?ch;
          ????????
          while?(lastPos?<?src.length())?{
          ????????????pos?
          =?src.indexOf("%",?lastPos);
          ????????????
          if?(pos?==?lastPos)?{
          ????????????????
          if?(src.charAt(pos?+?1)?==?'u')?{
          ????????????????????ch?
          =?(char)?Integer.parseInt(src.substring(pos?+?2,?pos?+?6),?16);
          ????????????????????tmp.append(ch);
          ????????????????????lastPos?
          =?pos?+?6;
          ????????????????}?
          else?{
          ????????????????????ch?
          =?(char)?Integer.parseInt(src.substring(pos?+?1,?pos?+?3),?16);
          ????????????????????tmp.append(ch);
          ????????????????????lastPos?
          =?pos?+?3;
          ????????????????}
          ????????????}?
          else?{
          ????????????????
          if?(pos?==?-1)?{
          ????????????????????tmp.append(src.substring(lastPos));
          ????????????????????lastPos?
          =?src.length();
          ????????????????}?
          else?{
          ????????????????????tmp.append(src.substring(lastPos,?pos));
          ????????????????????lastPos?
          =?pos;
          ????????????????}
          ????????????}
          ????????}
          ????????
          return?tmp.toString();
          ????}
          }


          posted on 2006-08-21 18:02 Alex 閱讀(654) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 文水县| 平安县| 河北区| 淅川县| 潮安县| 宜丰县| 昌黎县| 伊宁市| 南投市| 桐城市| 拉萨市| 岢岚县| 花垣县| 博罗县| 白朗县| 永仁县| 巴林右旗| 淮南市| 邳州市| 彩票| 永靖县| 庄浪县| 广南县| 福建省| 扎兰屯市| 图片| 沙坪坝区| 新兴县| 井研县| 曲沃县| 德钦县| 徐州市| 万盛区| 巩留县| 额尔古纳市| 孝昌县| 施甸县| 平遥县| 松江区| 沅陵县| 五华县|