# 实体和数字字符引用

可以使用有效的 HTML 实体引用和数字字符引用来代替相应的 Unicode 字符,但以下情况除外:

  • 在代码块和行内代码中无法识别实体和字符引用。

  • 实体和字符引用不能代替在 CommonMark 中定义结构元素的特殊字符。 例如,虽然 * 可用于代替字面量的 * 字符,* 不能替代 在强调分隔符,无序列表标记或专门的换行中的 *

符合 CommonMark 的解析器无需使用 Unicode 字符或实体引用,来存储有关特定字符是否在源中表示的信息。

实体引用 (opens new window)包含 & + 任何有效的HTML5实体名 + ;。文档https://html.spec.whatwg.org/multipage/entities.json (opens new window)是一个有效实体引用和相应代码的权威来源。

示例 321

Markdown HTML 效果
  & © Æ Ď
¾ ℋ ⅆ
∲ ≧̸

<p>  &amp; © Æ Ď
¾ ℋ ⅆ
∲ ≧̸</p>

十进制字符 (opens new window)&#+ 包含 1-7 个阿拉伯数字的字符串 + ; 组成,数字字符引用被解析为相应的 Unicode 字符。 无效的 Unicode 代码点将替换为 REPLACEMENT CHARACTER(U+FFFD)。 出于安全原因,代码点U+0000也将被U+FFFD替换。

示例 322

Markdown HTML 效果
&#35; &#1234; &#992; &#0;

<p># Ӓ Ϡ �</p>

十六进制字符 (opens new window)&# + Xx + 1-6 个十六进制数字 + ; 组成,它们也被解析为相应的 Unicode 字符(这次使用十六进制数字而不是十进制数字)。

示例 323

Markdown HTML 效果
&#X22; &#XD06; &#xcab;

<p>&quot; ആ ಫ</p>

以下是一些非实体引用:

示例 324

Markdown HTML 效果
&nbsp &x; &#; &#x;
&#87654321;
&#abcdef0;
&ThisIsNotDefined; &hi?;

<p>&amp;nbsp &amp;x; &amp;#; &amp;#x;
&amp;#87654321;
&amp;#abcdef0;
&amp;ThisIsNotDefined; &amp;hi?;</p>

尽管 HTML5 中使用了一些没有尾随分号的实体引用(例如&copy),在这里没有识别,因为这会混淆语法。

示例 325

Markdown HTML 效果
&copy

<p>&amp;copy</p>

不在 HTML5 命名实体列表中的字符串也不会被识别为实体引用:

示例 326

Markdown HTML 效果
&MadeUpEntity;

<p>&amp;MadeUpEntity;</p>

除了行内代码或代码块(包括 URL,链接标题 (opens new window)围栏代码块 (opens new window)信息字符串 (opens new window))之外,实体和数字字符引用可以在任何上下文中被识别:

示例 327

Markdown HTML 效果
<a href="&ouml;&ouml;.html">

<a href="&ouml;&ouml;.html">

示例 328

Markdown HTML 效果
[foo](/f&ouml;&ouml; "f&ouml;&ouml;")

<p><a href="/f%C3%B6%C3%B6" title="föö">foo</a></p>

示例 329

Markdown HTML 效果
[foo]

[foo]: /f&ouml;&ouml; "f&ouml;&ouml;"

<p><a href="/f%C3%B6%C3%B6" title="föö">foo</a></p>

示例 330

Markdown HTML 效果
``` f&ouml;&ouml;
foo
```

<pre><code class="language-föö">foo
</code></pre>

实体和数字字符引用在行内代码和代码块中被视为文字文本:

示例 331

Markdown HTML 效果
`f&ouml;&ouml;`

<p><code>f&amp;ouml;&amp;ouml;</code></p>

示例 332

Markdown HTML 效果
    f&ouml;f&ouml;

<pre><code>f&amp;ouml;f&amp;ouml;
</code></pre>

实体和数字字符引用不能用于代替表示 CommonMark 文档中结构的符号。

示例 333

Markdown HTML 效果
&#42;foo&#42;
*foo*

<p>*foo*
<em>foo</em></p>

示例 334

Markdown HTML 效果
&#42; foo

* foo

<p>* foo</p>
<ul>
<li>foo</li>
</ul>

示例 335

Markdown HTML 效果
foo&#10;&#10;bar

<p>foo

bar</p>

示例 336

Markdown HTML 效果
&#9;foo

<p>→foo</p>

示例 337

Markdown HTML 效果
[a](url &quot;tit&quot;)

<p>[a](url &quot;tit&quot;)</p>