第 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 实体:

源码:

&copy; 版权符号。
&mdash; 长破折号。
&mdash; 长破折号。
&hellip; 省略号。
&#64; 即 @ 符号。

渲染效果:分别显示 ©、—、…、@ 等字符。

推荐:常用实体 &amp;(&)、&lt;(<)、&gt;(>)、&quot;(")、&nbsp;(不可断空格)。

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

\* 这不是斜体 \*

&copy; 2026 铭新文库

<kbd>Esc</kbd> 退出。

<div style="border:1px solid #ccc;padding:0.5em;">
  提示框
</div>

:tada: 完成示例

渲染效果:标题、字面星号、版权符号、键盘按键样式、HTML 块、表情符号。

8.10 小结

  • 反斜杠转义 Markdown 语法字符
  • HTML 实体(&amp; 等)可直接使用
  • 行内与块级 HTML 需 unsafe=true 才会渲染
  • Emoji 可用 :short_code: 或直接粘贴字符
  • 用户提交内容须做 XSS 过滤

📊 本站总访问量 加载中… 次
投诉建议邮箱: [email protected]
免责声明:本站(铭新文库)内容为学习用途,编译整理自各编程语言官方文档(Go / Python / C / C++ / C#)与开源资料(Markdown),版权归原作者所有。本站力求内容准确,但不对内容的完整性、时效性做保证;如有歧义以官方英文文档为准。使用本站内容所产生的一切后果,本站不承担责任。如发现侵权或内容错误,请通过上方邮箱联系我们。