js、html中的單引號、雙引號及其轉義使用

來源:互聯網
上載者:User

標籤:引號   全文檢索索引   應該   替換   網頁   形式   結果   --   aci   

摘自:http://blog.csdn.net/changhong009/article/details/46004343

 

'     ----單引號

$#39;        ----單引號(相容IE)

"      -----雙引號

在一個網頁中的按鈕,寫onclick事件的處理代碼,不小心寫成如下:
<input value="Test" type="button" onclick="alert(""OK"");" />
IE提示出錯後,再漫不經心地改為:
<input value="Test" type="button" onclick="alert(\"OK\");" />
結果還是出錯。
這時,我就想不通了,雖然我知道最直接的解決方案是寫成這樣:
<input value="" type="button" onclick="alert(‘OK‘);" />
但為什麼javascript中的逸出字元\沒有效果了呢?

後來找到一段正常的代碼:
<input value="Test" type="button" onclick="alert(&quot;OK&quot;);" />
這時才理解,原來這時,還是歸於HTML的管轄範圍,所以逸出字元應該使用HTML的,而不是javascript的。

兩個雙引號的做法是vbScript的,\"這種做法則是javascript的,而HTML的,則是用&quot;,此外還可以使用:"、‘。

下面列出各種表達方法:
<html>
< body>
< input value="外雙引號內雙引號-錯誤" type="button" onclick="alert("OK");" /><br />
< input value="外單引號內單引號-錯誤" type="button" onclick=‘alert(‘OK‘);‘ /><br />
< input value="兩個雙引號-錯誤" type="button" onclick="alert(""OK"");" /><br />
< input value="兩個單引號-錯誤" type="button" onclick="alert(‘‘OK‘‘);" /><br />
< input value="\+雙引號-錯誤" type="button" onclick="alert(\"OK\");" /><br />
< input value="\+單引號-錯誤" type="button" onclick="alert(\‘OK\‘);" /><br />
< input value="外雙引號內單引號-OK" type="button" onclick="alert(‘OK‘);" /><br />
< input value="外單引號內雙引號-OK" type="button" onclick=‘alert("OK");‘ /><br />
< input value="外部不使用引號-OK" type="button" onclick=alert(‘OK‘);alert("OK"); /><br />
< input value="HTML逸出字元"(& # 3 4 ;)-OK" type="button" onclick="alert("OK");" /><br />
< input value="HTML逸出字元‘(& # 3 9 ;)-OK" type="button" onclick="alert(‘OK‘);" /><br />
< input value="HTML逸出字元"(& # x 2 2 ;)-OK" type="button" onclick="alert(‘OK‘);" /><br />
< input value="HTML逸出字元‘(& # x 2 7 ;)-OK" type="button" onclick="alert(‘OK‘);" /><br />
< input value="HTML逸出字元&quot;(& q u o t ;)-OK" type="button" onclick="alert(&quot;OK&quot;);" /><br />
< input value="HTML逸出字元&apos;(& a p o s ;)-IE錯誤"type="button" onclick="alert(&apos;OK&apos;);" /><br />

<input value="其它\\-錯誤" type="button" onclick="alert(\\"OK\\");" /><br />
< input value="其它\& # 3 4 ;-錯誤" type="button" onclick="alert(\"OK\");" /><br />
< /body>
< /html>

 

 

最近在做全文檢索索引模組功能的測試,發現對於特殊符號的處理還存在很大的問題。

有人說Spring本身提供了對HTML、javascript、sql語句的轉碼工具類,但是測試了一下發現其HtmlUtils.htmlEscape()對單引號並沒做處理,只是轉碼了以下幾個特殊字元:

  • &:&amp;
  • " :&quot;
  • < :&lt;
  • > :&gt;

    後來採用replace替換為(&apos;),IE瀏覽器裡依然沒有起到作用,只好在google裡測試一下查看原始碼,發現其轉碼成(&#39;)

    今天看到下面這篇文章才明白:

    轉:http://blog.huachen.me/single-quote-ie-html-entity

    在 (x)HTML 中,一些特殊字元應該進行 HTML 實體轉義。

    常見的有:&(and)、"(雙引號)、(單引號)、<(小於符號)、>(大於符號),這些在 (x)HTML 文檔內容中應該分別轉換成:&amp;&quot;&#39;&lt; 和 &gt;

    但是問題就來了,為什麼上面單引號的轉義和別的特殊字元不同呢?為什麼唯獨單引號用的是實體編號(&#39;),而其它的用的是實體名稱(&apos;)呢?

    原因就是 IE 瀏覽器暫時不支援單引號的實體名稱,IE 瀏覽器暫時只支援單引號的實體編號

    這也是 PHP htmlspecialchars 函數把單引號轉義成 &#39;,而不是 &apos; 的原因。

    另外,百度也不支援單引號的實體名稱,這個是我在我的部落格在百度搜尋結果中看出來的(現在我已經把單引號改成實體編號的形式了)。

    這裡可以查看 HTML 的所有特殊字元的實體編號和實體名稱

Character Entity Number Entity Name Description
" &#34; &quot; quotation mark
&#39; &apos; (does not work in IE) apostrophe 
& &#38; &amp; ampersand
< &#60; &lt; less-than
> &#62; &gt; greater-than

js、html中的單引號、雙引號及其轉義使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.