🔧Toolify

HTML實體編碼和解碼線上工具

貼上文字以將特殊字元編碼為HTML實體,或貼上含實體的HTML以解碼回可讀文字。可在命名實體(&、<、©)、十進位數字(©)或十六進位(©)編碼之間選擇。亦可選擇對所有非ASCII字元進行編碼以獲得最大相容性。

編碼輸出

運作原理

什麼是HTML實體?

HTML實體是用於表示在HTML中具有特殊含義或無法直接輸入的字元的特殊文字代碼。最重要的是HTML語法中保留的五個字元:&(和號)→ &amp;、<(小於號)→ &lt;、>(大於號)→ &gt;、"(雙引號)→ &quot; 以及 '(單引號)→ &apos;。若這些字元在文字內容中未經編碼出現,瀏覽器可能會將其解釋為HTML標記,進而導致渲染錯誤或安全漏洞。

HTML實體有三種格式:命名實體使用描述性名稱(&copy; 表示 ©,&euro; 表示 €),十進位數字字元參考使用碼點編號(&#169; 表示 ©),十六進位字元參考使用十六進位代碼(&#xA9; 表示 ©)。三種格式完全等價——無論使用哪種格式,瀏覽器都會渲染相同的字元。命名實體可讀性最強;數字實體最為通用,因為它適用於任何Unicode字元。

何時需要編碼HTML實體

每當文字內容或屬性值中出現五個保留HTML字元(&、<、>、"、')時,至少必須對它們進行編碼。不進行編碼是跨站腳本(XSS)漏洞的根源:若使用者輸入未經編碼直接插入HTML,攻擊者可注入script標籤或事件處理程式。React、Vue和Angular等現代框架預設自動對HTML進行編碼——innerHTML是主要例外,手動編碼在此仍然至關重要。

除了必須編碼的五個字元外,對於無法可靠處理UTF-8的環境,您可能還需要對非ASCII字元進行編碼:HTML電子郵件、舊版CMS系統或追求最大相容性的文件。「編碼所有非ASCII字元」選項會將碼點127以上的每個字元轉換為數字實體,確保輸出為純ASCII,同時保留渲染時的視覺外觀。對於現代UTF-8 HTML檔案,對非ASCII字元進行編碼是可選的——正確宣告字元集即可。

HTML實體 vs URL編碼 vs Base64

HTML實體、URL編碼(百分比編碼)和Base64是用於不同場景的三種編碼方案。HTML實體(如 &amp;)用於在HTML文件中安全地表示字元。URL編碼(如 %26 表示 &)用於在查詢字串和URL中對具有特殊含義的字元進行編碼。Base64將任意二進位資料編碼為ASCII文字,用於資料URI和電子郵件附件。

常見錯誤是將它們混淆:對HTML內容使用URL編碼,或對URL使用HTML編碼。例如,URL查詢字串中的和號需要百分比編碼(%26),而非HTML實體編碼(&amp;)。若構建的URL隨後嵌入HTML屬性中,則兩者都需要:URL編碼的形式放入屬性,屬性值本身進行HTML編碼。理解哪種編碼適用於哪種上下文,可防止雙重編碼錯誤和安全問題。

常見問題

和號(&)的HTML實體是什麼?

和號的HTML實體是 &amp;——字面上由 &、a、m、p 和分號組成。在HTML原始碼中寫 &amp; 時,瀏覽器會顯示單個 & 字元。每當和號出現在文字內容或屬性值中時,必須進行此編碼,因為未編碼的 & 會開始一個實體序列,解析器會嘗試對其進行解釋。

版權符號(©)的HTML實體是什麼?

版權符號 © 有三個等價的HTML實體:命名實體 &copy;、十進位數字實體 &#169; 和十六進位實體 &#xA9;。三者都渲染相同的 © 字元。命名實體是最具可讀性的選項。對於現代UTF-8 HTML,只要HTML檔案宣告了 charset=utf-8,也可以直接輸入 © 字元,無需使用實體。

在HTML中需要對引號進行編碼嗎?

在雙引號分隔的HTML屬性內,雙引號(")必須編碼為 &quot;,例如:<input value="&quot;">。在單引號分隔的屬性內,單引號(')必須編碼為 &apos; 或 &#39;。在元素文字內容中(標籤之間),兩種引號都可以不編碼出現,但編碼也無妨。在所有上下文中一致地對兩者進行編碼是最安全的做法。

命名實體和數字實體有什麼區別?

命名實體使用描述性詞語(&copy;、&euro;、&hearts;),在HTML規範中定義——並非每個Unicode字元都有命名實體。數字實體使用Unicode碼點,可以是十進位(&#8364; 表示 €)或十六進位(&#x20AC; 表示 €)。數字實體適用於任何Unicode字元,而命名實體只涵蓋其中一個子集。兩者在瀏覽器中的渲染效果完全相同。

在HTML中需要對非ASCII字元進行編碼嗎?

通常不需要。若HTML文件宣告了UTF-8編碼(meta charset=utf-8)並以UTF-8儲存,則可以直接寫入非ASCII字元:é、ñ、中、🎉。將它們編碼為實體是可選的,會使原始碼更難閱讀。例外情況是在可能無法保留編碼的場景中發送HTML:電子郵件、舊版API或會損壞非ASCII位元組的系統。在這些情況下,將所有非ASCII字元編碼為數字實體可確保輸出為純安全ASCII。

什麼是XSS?HTML實體如何防止它?

跨站腳本(XSS)是一種安全漏洞,攻擊者透過插入伺服器在未經編碼的情況下反映到HTML中的文字,將惡意JavaScript注入網頁。例如,若使用者輸入 <script>alert('xss')</script> 直接插入頁面,瀏覽器就會執行該腳本。若正確編碼輸入——將 < 轉換為 &lt;,將 > 轉換為 &gt;——瀏覽器會將文字原樣顯示,而非將其解析為標籤。HTML實體編碼是防禦反射型和儲存型XSS的主要手段。

為什麼 &nbsp; 不出現在此工具的列表中?

此工具對具有命名實體的字元進行編碼。當您輸入實際的不換行空格字元(在某些系統上可透過Alt+Space插入,或從字元對應表複製)時,不換行空格(Unicode U+00A0)將被編碼為 &nbsp;。普通空格(U+0020,空白鍵)不會被編碼,因為它是安全的ASCII字元。若輸出中特別需要 &nbsp;,請在輸入中鍵入或貼上不換行空格字元。

可以用此工具防止使用者輸入中的HTML注入嗎?

可以——在將使用者提供的文字插入HTML之前對其進行編碼,是防禦HTML注入和XSS的核心手段之一。至少需要編碼五個保留字元:&、<、>、"、'。此工具對這五個字元全部進行編碼。但是,僅靠編碼並不是完整的安全解決方案:還需要適當的Content Security Policy標頭、謹慎處理屬性中的javascript: URL以及框架級保護措施。對於生產應用,請使用專為安全設計的伺服器端函式庫(OWASP Java Encoder、客戶端DOMPurify等),而不是手動編碼。

相關工具

最後更新:

看看 AI 提示詞 →

直接插入頁面,瀏覽器就會執行該腳本。若正確編碼輸入——將 < 轉換為 <,將 > 轉換為 >——瀏覽器會將文字原樣顯示,而非將其解析為標籤。HTML實體編碼是防禦反射型和儲存型XSS的主要手段。"}},{"@type":"Question","name":"為什麼   不出現在此工具的列表中?","acceptedAnswer":{"@type":"Answer","text":"此工具對具有命名實體的字元進行編碼。當您輸入實際的不換行空格字元(在某些系統上可透過Alt+Space插入,或從字元對應表複製)時,不換行空格(Unicode U+00A0)將被編碼為  。普通空格(U+0020,空白鍵)不會被編碼,因為它是安全的ASCII字元。若輸出中特別需要  ,請在輸入中鍵入或貼上不換行空格字元。"}},{"@type":"Question","name":"可以用此工具防止使用者輸入中的HTML注入嗎?","acceptedAnswer":{"@type":"Answer","text":"可以——在將使用者提供的文字插入HTML之前對其進行編碼,是防禦HTML注入和XSS的核心手段之一。至少需要編碼五個保留字元:&、<、>、\"、'。此工具對這五個字元全部進行編碼。但是,僅靠編碼並不是完整的安全解決方案:還需要適當的Content Security Policy標頭、謹慎處理屬性中的javascript: URL以及框架級保護措施。對於生產應用,請使用專為安全設計的伺服器端函式庫(OWASP Java Encoder、客戶端DOMPurify等),而不是手動編碼。"}}]},{"@context":"https://schema.org","@type":"HowTo","name":"HTML實體編碼和解碼線上工具","inLanguage":"zh-TW","step":[{"@type":"HowToStep","position":1,"name":"編碼特殊字元","text":"選擇編碼模式,將文字貼上到左側方塊中。編碼後的輸出將顯示在右側。選擇「命名」獲得可讀實體(&),選擇「數字」獲得通用十進位(&),選擇「十六進位」獲得十六進位(&)。勾選「編碼所有非ASCII字元」可將每個非ASCII字元轉換為實體。"},{"@type":"HowToStep","position":2,"name":"解碼HTML實體","text":"選擇解碼模式,將含實體的HTML貼上到左側方塊中。工具可識別命名實體(&、©)、十進位數字實體(©)和十六進位實體(©),將它們全部轉換回原始字元。"},{"@type":"HowToStep","position":3,"name":"互換編碼與解碼","text":"點擊「互換」按鈕可將輸出移至輸入並切換模式——便於驗證往返轉換或快速反轉一次轉換。"},{"@type":"HowToStep","position":4,"name":"複製結果","text":"點擊「複製」將編碼或解碼結果放入剪貼簿。"}]}]