所有指南

文字為什麼顯示“&”以及如何修複

發布於 · 更新於 閱讀約 1 分鐘

當文字顯示“&”而不是“&”時,說明某個 HTML 實體被多編碼了一次。工具一次解碼一級,並在還剩一級時提醒您。

什麼是 HTML 實體

實體是一串符號,用來表示頁面代碼中保留的字元。常見的有五個。

字元實體
&&
<&lt;
>&gt;
"&quot;
'(直撇號)&#039;

重複編碼從哪裡來

文字有時會經過兩個系統,每個都會編碼:先是編輯器,然後是頁面模板。每經過一次,都會轉換前一個實體裡的“&”。使用 編碼與解碼 HTML 實體,對“Tom & Jerry”編碼得到“Tom &amp; Jerry”,再對這個結果編碼,就得到“Tom &amp;amp; Jerry”。

步驟得到的文字
原始文字Tom & Jerry
編碼一次Tom &amp; Jerry
編碼兩次Tom &amp;amp; Jerry

瀏覽器在顯示時會解碼一級。因此,編碼了兩次的文字,顯示出來是“&amp;”而不是“&”。

一次解碼一級

工具每次只去掉一級實體。如果結果裡仍有實體,“兩者”模式會提示,您再對結果運行一次解碼即可。

文字第一次解碼第二次解碼
Tom &amp;amp; JerryTom &amp; JerryTom & Jerry
&amp;lt;b&amp;gt;gras&amp;lt;/b&amp;gt;&lt;b&gt;gras&lt;/b&gt;<b>gras</b>

一次只解碼一級,可以避免撤銷有意的編碼:一個需要在螢幕上顯示“&amp;”的代碼示例,在頁面裡寫成“&amp;amp;”。

重音與符號

解碼能識別所有以分號結尾的命名實體,不只是常用的那五個。“caf&eacute; &agrave; 5&nbsp;&euro; &copy; 2026”得到“café à 5 € © 2026”,不間斷空格也變成真正的不間斷空格。

數字實體

數字實體同樣會被解碼:“&#233;t&#xE9;”得到“été”,“&#x1F600;”和“&#128512;”得到同一個表情符號。

工具保持原樣的内容

  • 像“&inconnue;”這樣的未知實體保持原樣。
  • 句子裡沒有結尾分號的實體,比如“&amp”或“&lt”,不會被改動。
  • 帶參數的地址,比如“https://exemple.fr/?a=1&param=2&copy=4”,保持準確:其中的“&param”和“&copy”不會被當成實體。

編碼代碼以便顯示

要在頁面裡顯示一段代碼,只需編碼一次。文字“<a href="x">l’été & plus</a>”得到“&lt;a href=&quot;x&quot;&gt;l&#039;été &amp; plus&lt;/a&gt;”。帶重音的字母不會被編碼,只有那五個保留字元會被編碼。

避免這個問題

只編碼一次,並且在最後一刻、寫入頁面時再編碼。要批量取代錯誤編碼留下的殘餘,可以用 尋找並取代。網址採用另一種編碼,見 Base64、雜湊與編碼地址,不要混淆。

檢查結果

  1. 只要工具提示還有實體,就繼續再運行一次解碼。
  2. 與螢幕上的原始文字對照。
  3. 檢查不間斷空格和表情符號。

編碼與解碼 HTML 實體