HTML 实体
HTML中字符的文本表示方式,有三种形式:命名(&)、十进制(&)、十六进制(&),对于与HTML语法冲突的字符是必需的。
What Are HTML Entities?
HTML entities are special text sequences that represent characters in HTML documents. They allow you to display characters that would otherwise be interpreted as HTML markup, characters outside the printable ASCII range, or characters that are difficult to type directly on a keyboard.
An HTML entity begins with an ampersand (&) and ends with a semicolon (;). Between them, you write either a named reference (like &) or a numeric reference (like A or A).
Why HTML Entities Exist
HTML uses certain characters for its own syntax. The less-than sign (<) opens tags, the greater-than sign (>) closes them, and the ampersand itself starts entity sequences. If you want to display these characters as content rather than markup, you must escape them. Without entities, writing <b> in your content would be parsed as an HTML tag, not displayed as literal text.
Beyond reserved characters, entities also cover the full Unicode range, letting you embed any character — from accented letters and currency symbols to mathematical operators and emoji — using only ASCII source code.
Named vs. Numeric Entities
Named entities use a human-readable keyword: © for ©, < for <, for a non-breaking space. HTML5 defines over 2,000 named references.
Numeric entities reference a character by its Unicode code point. Decimal: © for ©. Hexadecimal: © for the same character. Every Unicode character can be written as a numeric entity; named entities exist only for a curated subset.
Common Examples
<!-- Reserved characters -->
< <!-- < -->
> <!-- > -->
& <!-- & -->
" <!-- " -->
' <!-- ' (HTML5) -->
<!-- Common symbols -->
© <!-- © -->
® <!-- ® -->
™ <!-- ™ -->
<!-- non-breaking space -->
— <!-- — em dash -->
€ <!-- € -->
<!-- Math -->
× <!-- × -->
÷ <!-- ÷ -->
± <!-- ± -->
<!-- Numeric equivalents -->
A <!-- A (decimal) -->
A <!-- A (hex) -->
😀 <!-- 😀 emoji -->
Using Entities in Practice
In modern web development, you should always declare your document encoding as UTF-8 in the <meta charset="UTF-8"> tag. With UTF-8, you can type most Unicode characters directly in your source file and avoid entities for non-reserved characters. Entities remain necessary only for the five reserved HTML characters and for generating characters programmatically.
Template engines like Jinja2, Django templates, and React's JSX automatically escape <, >, &, ", and ' when outputting user content — protecting against XSS injection.
import html
html.escape("<script>alert('xss')</script>")
# "<script>alert('xss')</script>"
html.unescape("© 2024 — All rights reserved")
# "© 2024 — All rights reserved"
Browser Parsing
Browsers decode entities during HTML parsing, before the DOM is built. The decoded text character lives in the DOM; JavaScript accessing element.textContent sees the actual character, not the entity sequence.
Quick Facts
| Property | Value |
|---|---|
| Syntax | &name; or &#decimal; or &#xhex; |
| Minimum entity | < (4 chars) |
| Named entities in HTML5 | 2,231 |
| Must-escape in HTML | < > & (attributes also ") |
| UTF-8 recommendation | Encode source as UTF-8; use entities only for reserved chars |
| JavaScript decoding | element.textContent returns decoded character |
| Case sensitivity | Named entities are case-sensitive: &Amp; is invalid |
相关术语
网页与 HTML 中的更多内容
声明响应字符编码的HTTP头参数(Content-Type: text/html; charset=utf-8),优先级高于文档内的编码声明。
通过::before和::after伪元素使用Unicode转义插入生成内容的CSS属性:content: '\2713'可插入✓。
CSS properties (direction, writing-mode, unicode-bidi) controlling text layout direction. Works with Unicode …
ECMAScript Internationalization API providing locale-aware string comparison (Collator), number formatting (NumberFormat), date …
将Unicode域名转换为xn--前缀ASCII字符串的ASCII兼容编码,例如münchen.de → xn--mnchen-3ya.de。
CSS supports Unicode via escape sequences (\2713 for ✓), the content property …
XML版本的数字字符引用:✓或✓,XML只有5个命名实体(& < > " '),而HTML5有2,231个。
选择特定字形变体的字符(U+FE00–U+FE0F、U+E0100–U+E01EF),VS15(U+FE0E)表示文本呈现,VS16(U+FE0F)表示表情符号呈现。
使用人类可读名称的HTML实体:© → ©,— → —。HTML5定义了2,231个命名引用,且区分大小写。
包含非ASCII Unicode字符的域名,内部以Punycode(xn--...)存储,但向用户显示为Unicode,安全隐患:同形字攻击。