科技熊工作室科技熊工作室 · 攻略

— in HTML 怎么写:显示结果与常见错误

更新于 2026-10-25 · kjxclub.shop

简答:— in HTML 的标准写法是 <code>&mdash;</code>,浏览器显示为“—”。也可用 <code>&#8212;</code> 或 <code>&#x2014;</code>;若页面显示源码,先检查是否重复转义或漏写分号。

定义:<code>&mdash;</code> 是 HTML 命名字符引用,对应 Unicode U+2014 的 em dash,渲染结果为“—”。

先记住这三种等价写法

如果你只想在页面正文中输出长破折号,优先使用 &mdash;。它的显示结果是“—”,另外两种数字字符引用也指向同一个字符。HTML 字符引用通常以 & 开始、以分号结束,具体语法可查看 WHATWG HTML Standard 的字符引用说明。

em dash 的 HTML 写法对照
源码写法页面显示类型建议
&amp;mdash;&mdash;命名字符引用的源码展示写法用于代码示例,不是正文输出
&mdash;—命名字符引用正文优先使用
&#8212;—十进制字符引用适合需要明确数字编码时使用
&#x2014;—十六进制字符引用适合按 Unicode 编码书写

注意:表格第一行中的 &amp;mdash; 是为了让读者看到字面量“&mdash;”。如果把它直接放在普通正文中,浏览器会显示“&mdash;”,而不会显示长破折号。

可直接复制运行的 HTML 示例

下面示例同时演示正文、属性值和代码展示三种场景。复制到新建的 HTML 文件后,用浏览器打开,正文应显示两个长破折号;鼠标悬停在链接上时,title 值应为 A—B。

<!doctype html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>&mdash; in HTML 示例</title> </head> <body> <p>连接问题可以这样说明:先检查 DNS&mdash;再检查 MTU。</p> <p>属性值示例:<a href="#" title="A&mdash;B">查看提示</a></p> <p>要在页面上展示源码,请写成:<code>&amp;mdash;</code></p> </body> </html>

示例中,真正被浏览器解析的正文使用 &mdash;;要展示字面量源码,则要把连接符号本身再写成 &amp;。字符引用的命名、十进制和十六进制形式可对照 MDN 的 Character reference 说明。

&mdash;、&ndash; 和普通连字符怎么选

三者不是同一个字符,选择时先看语义,不要只按长度判断。em dash 常用于句子中的插入、转折或突然中断;en dash 常用于范围;普通连字符主要用于复合词或标识符。不同编辑规范对 em dash 两侧是否留空格可能不同,项目内应保持一致。

三类横线字符的区别
写法显示常见用途
&mdash;—句中插入说明、转折或中断
&ndash;–数字、日期或范围,例如 10–20
--连字符、命令参数、文件名和标识符

Google 技术文档风格指南也将 em dash 与 en dash 分开说明。若内容是代码、命令或 URL,不要为了排版把普通连字符替换成长破折号。

页面显示 &mdash; 时的排查顺序

  1. 先看源码是否少了分号:把 &mdash; 写完整,不要写成 &mdash。WHATWG 将缺少分号列为字符引用解析错误,统一保留分号最稳妥。
  2. 再检查是否重复转义:如果源码里出现 &amp;mdash;,浏览器通常会先把 &amp; 解码为普通 &,最终页面显示字面量 &mdash;。
  3. 检查代码展示层:在 pre 或 code 中展示 HTML 源码时,需要把示例里的 & 写成 &amp;,否则浏览器会尝试解析示例。
  4. 检查编辑器或 CMS:有些编辑器会自动转义一次,模板又转义一次。修改前先保存原始源码,再逐层确认最终输出。
  5. 检查文件编码:如果直接输入字符“—”而不是实体,HTML 文件应使用 UTF-8,并保留 <meta charset="utf-8">。字符编码决定字节如何被解释,相关说明见 MDN 的 Character encoding 词条。

正文、属性值和源码示例的写法区别

在普通文本节点中,&mdash; 会被解析成“—”;在属性值中也可以使用它,例如 title="A&mdash;B" 的实际属性值是 A—B。但如果你是在文章中展示这段属性源码,展示层必须把其中的和号再转义一次。

同一字符在不同场景中的写法
目标应写入页面源码最终看到
正文显示长破折号&mdash;—
属性值为 A—Btitle="A&mdash;B"提示文本为 A—B
文章展示源码 &mdash;&amp;mdash;看到字面量 &mdash;

如果页面需要 UTF-8,现代浏览器通常也能直接处理字符“—”;但在代码示例、模板或需要统一编码表示的场景中,使用字符引用更容易核对。MDN 也提醒,除必须转义的特殊字符外,不必无条件使用实体。

发布前的快速检查清单

本文为技术说明,解析行为以 WHATWG HTML 标准与浏览器实现为准。

常见问题

&mdash; in HTML 最正确的写法是什么?

标准、易读的写法是 <code>&mdash;</code>,浏览器会渲染为 em dash“—”。也可以使用 <code>&#8212;</code> 或 <code>&#x2014;</code>。

为什么页面直接显示 &mdash;,没有变成长破折号?

常见原因是代码位于源码展示区域、被模板重复转义,或写成了缺少分号的形式。先查看最终 HTML,再区分“要显示字符”还是“要展示源码”。

&mdash; 和 &ndash; 有什么区别?

<code>&mdash;</code> 显示为“—”,通常用于句中插入或转折;<code>&ndash;</code> 显示为“–”,通常用于数字、日期或范围。

title 属性里可以写 &mdash; 吗?

可以。<code>title="A&mdash;B"</code> 的实际属性值是 A—B。如果你要在文章中展示这段源码,展示层应把和号写成 <code>&amp;</code>。

可以直接把“—”复制到 HTML 里吗?

可以,前提是文件和响应内容使用 UTF-8。若要便于代码审查、模板传输或统一编码,也可以使用 <code>&mdash;</code>。

数字写法和命名写法显示效果一样吗?

对于 em dash,<code>&mdash;</code>、<code>&#8212;</code> 和 <code>&#x2014;</code> 都对应 U+2014,正常解析时显示相同。

相关阅读

参考资料

  1. WHATWG HTML Standard:Character references
  2. WHATWG HTML Standard:Named character references
  3. MDN:Character reference
  4. MDN:Character encoding
  5. Google Developer Documentation Style Guide:Dashes