第 8 章 转义字符、HTML 与表情
本章覆盖:
| 语法 | 形式 | 说明 |
|---|---|---|
| 反斜杠转义 | \* \# 等 |
CommonMark |
| HTML 字符引用 | & @ |
CommonMark |
| 行内 HTML | <span> 等 |
CommonMark(unsafe=true 时) |
| 块级 HTML | <div> 等 |
CommonMark |
| 表情 Emoji | :smile: |
GFM / 多数编辑器 |
| 复制粘贴 Emoji | 直接字符 | 通用 |
8.1 反斜杠转义
反斜杠 \ 可转义 Markdown 语法字符,使其按字面显示:
源码:
\* 这是字面星号,不是斜体开始。
\# 这是字面井号,不是标题。
\- 列表项前加反斜杠即非列表。渲染效果:星号、井号、减号按字面显示。
8.2 可转义字符
CommonMark 规范列出可转义字符(部分):
| 字符 | 名称 |
|---|---|
\ |
反斜杠 |
` |
反引号 |
* |
星号 |
_ |
下划线 |
{} |
花括号 |
[] |
方括号 |
() |
圆括号 |
# |
井号 |
+ |
加号 |
- |
减号 |
. |
点 |
! |
感叹号 |
| ` | ` |
8.3 不可过度转义
非上述字符前的反斜杠按字面显示:
源码:
\n 不是换行。
\a 显示为字面 `\a`。渲染效果:\n、\a 字面显示。
8.4 HTML 字符引用
可直接使用 HTML 实体:
源码:
© 版权符号。
— 长破折号。
— 长破折号。
… 省略号。
@ 即 @ 符号。渲染效果:分别显示 ©、—、…、@ 等字符。
推荐:常用实体
&(&)、<(<)、>(>)、"(")、 (不可断空格)。
8.5 行内 HTML
当 goldmark.renderer.unsafe = true(Hugo 中常用配置),可直接嵌入行内 HTML:
源码:
段落中含 <span style="color:red">红色</span> 文本。
<kbd>Ctrl</kbd> + <kbd>C</kbd> 复制。渲染效果:“红色"显示红色,“Ctrl"“C"显示键盘按键样式。
8.6 块级 HTML
源码:
<div class="note">
<p>这是一段 HTML 块。</p>
</div>渲染效果:HTML 块按 HTML 原样渲染。
注意:HTML 块内的 Markdown 不会渲染(除非用
markdown="1"等扩展)。Hugo Goldmark 默认unsafe=true,但若关闭则 HTML 会被过滤。
8.7 安全考量
跨站脚本(XSS)防御:
- 用户提交的 Markdown 应过滤
<script>、<iframe>、onload=等 - 静态站点生成器(Hugo)默认对金 mark 不输出脚本
- 文档站可关闭
unsafe,禁止 HTML 嵌入
8.8 表情 Emoji
8.8.1 GFM 短码写法
源码:
:smile: :+1: :tada: :rocket: :sparkles:渲染效果(GFM 支持):分别显示 😄 👍 🎉 🚀 ✨。
完整短码列表参见 Emoji Cheat Sheet。
8.8.2 直接复制粘贴
源码:
完成 🎉!👍渲染效果:直接显示对应 Emoji。
8.9 综合实例
源码:
## 转义与 HTML
\* 这不是斜体 \*
© 2026 铭新文库
<kbd>Esc</kbd> 退出。
<div style="border:1px solid #ccc;padding:0.5em;">
提示框
</div>
:tada: 完成示例渲染效果:标题、字面星号、版权符号、键盘按键样式、HTML 块、表情符号。
8.10 小结
- 反斜杠转义 Markdown 语法字符
- HTML 实体(
&等)可直接使用 - 行内与块级 HTML 需
unsafe=true才会渲染 - Emoji 可用
:short_code:或直接粘贴字符 - 用户提交内容须做 XSS 过滤