我要啦免费统计

          微藍(lán)領(lǐng)域

          我的學(xué)習(xí)檔案館
          posts - 19, comments - 57, trackbacks - 0, articles - 57
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          日歷

          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          公告

             如果大家在閱讀的過程中有什么問題,可以留言或發(fā)EMAIL給我. 我一定會回復(fù)并盡力給予答復(fù).這也是相互促進(jìn)的過程.. 有JAVA或J2EE方面的問題,也可以交流一下

          隨筆分類(15)

          搜索

          •  

          積分與排名

          • 積分 - 161712
          • 排名 - 370

          最新評論

          javascript特殊字符轉(zhuǎn)換

          Posted on 2007-10-18 11:53 hilor 閱讀(4002) 評論(0)  編輯  收藏 所屬分類: common
          javascript和JAVA一樣,一些特殊字符需要轉(zhuǎn)義
           
          特別是在一些JSP網(wǎng)頁的開發(fā)中,好多程序員經(jīng)常會忘掉這點(diǎn),
          例:
          1 <% List textList = (List)request.getAttribute("textList"); %>
          2 <script>
          3 <!--
          4 var txtList = new Array();
          5 <% for ( int i = 0 ; i < textList.size() ; i++) { %>
          6 txtList[<%=i%>= "<%=textList.get(i)%>";
          7 <% } %>
          8 -->
          9 </script>
           
          這段JS就存在問題,未對特殊符號進(jìn)行處理.有特殊符號的情況下有可能報JSERROR
           
          JAVASCRIPT中需要轉(zhuǎn)義的有:
           
          轉(zhuǎn)義序列 字符
          \b 退格
          \f 走紙換頁
          \n 換行
          \r 回車
          \t 橫向跳格 (Ctrl-I)
          \' 單引號
          \" 雙引號
          \\ 反斜杠

          此外,對/符號我覺得也有必要進(jìn)行處理,因?yàn)橄?--></script> 這樣的字符串也會使SCRIPT出錯.
           
          下面提供一個比較實(shí)用java的方法,做這個特殊符號的處理:
           1public class JavaScriptUtils {
           2 public static String javaScriptEscape(String input) {
           3  if (input == null{
           4   return input;
           5  }

           6  StringBuffer filtered = new StringBuffer(input.length());
           7  char prevChar = '\u0000';
           8  char c;
           9  for (int i = 0; i < input.length(); i++{
          10   c = input.charAt(i);
          11   if (c == '"'{
          12    filtered.append("\\\"");
          13   }

          14   else if (c == '\'') {
          15    filtered.append("\\'");
          16   }

          17   else if (c == '\\'{
          18    filtered.append("\\\\");
          19   }

          20   else if (c == '\t'{
          21    filtered.append("\\t");
          22   }

          23   else if (c == '\n'{
          24    if (prevChar != '\r'{
          25     filtered.append("\\n");
          26    }

          27   }

          28   else if (c == '\r'{
          29    filtered.append("\\n");
          30   }
           else if (c == '\f'{
          31                filtered.append("\\f");
          32  }
           else if (c == '/'{
          33                filtered.append("\\/");
          34            }

          35   else {
          36    filtered.append(c);
          37   }

          38   prevChar = c;
          39  }

          40  return filtered.toString();
          41 }

          42}
          43


          上面的例子應(yīng)改為:
          1 <% List textList = (List)request.getAttribute("textList"); %>
          2 <script>
          3 <!--
          4 var txtList = new Array();
          5 <% for ( int i = 0 ; i < textList.size() ; i++) { %>
          6 txtList[<%=i%>= "<%=JavaScriptUtils.javaScriptEscape(textList.get(i))%>";
          7 <% } %>
          8 -->
          9 </script>
          主站蜘蛛池模板: 定安县| 云浮市| 道孚县| 江阴市| 凤山市| 临沂市| 马龙县| 东乌珠穆沁旗| 漠河县| 浠水县| 大荔县| 桦甸市| 盖州市| 望都县| 额济纳旗| 浠水县| 大安市| 安康市| 桂平市| 龙川县| 乐安县| 吉水县| 玉门市| 秭归县| 晋州市| 张家界市| 伊金霍洛旗| 类乌齐县| 新蔡县| 英超| 芜湖市| 宜都市| 蒲城县| 察哈| 苍山县| 桐柏县| 石屏县| 昌黎县| 囊谦县| 山西省| 高阳县|