HTML中长破折号应使用命名实体—或十进制数字实体—,因其语义明确、编码无关、全浏览器兼容;直接粘贴U+2014字符在非UTF-8环境易乱码,且CMS可能误转,而—与–、-语义及宽度均不同,不可混用。

HTML 中 — 实体到底该用哪个?
直接写 —(U+2014)在大多数现代浏览器里能显示,但它是“裸字符”,不是 HTML 实体。真正符合 HTML 规范的长破折号实体只有 —(命名)或 —(十进制数字实体)。别用 —(十六进制)——虽然技术上合法,但旧版 IE 和部分邮件客户端不认。
为什么 — 比直接粘贴 — 更可靠?
直接复制粘贴破折号容易出问题:
- 编辑器或 CMS 可能自动转义成其他符号(比如把
—当作–或-) - 文件编码若非 UTF-8(如 ISO-8859-1),
—会变成乱码或方块 -
—是语义明确的 HTML 实体,和文档编码无关,所有浏览器都支持
示例对比:<p>前端开发—从零开始</p> 安全;<p>前端开发—从零开始</p> 在非 UTF-8 环境下可能崩。
— 和 –、短横线 - 的区别不能混
三者语义和宽度完全不同:
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
-
—(长破折号,U+2014):用于句子中断、补充说明,如他说得对——但没说全 -
–(短破折号,U+2013):用于范围或连接,如第1–5页、北京–上海高铁 -
-(连字符,U+002D):仅用于单词内断行或复合词,如well-known、e-mail
用错会破坏可访问性(屏幕阅读器读法不同)和排版专业性。CSS 无法替代语义——border-bottom 再像也不是 —。
实际排版中容易被忽略的细节
长破折号前后是否加空格,取决于语言习惯:
- 英文排版:
—前后**不加空格**(text—text) - 中文排版:按出版规范,
—前后通常**各加一个不换行空格**,避免挤在一起,如— - 千万别用普通空格——会被浏览器合并,必须用
更隐蔽的问题:某些 CMS 或富文本编辑器(如 WordPress Classic Editor)会自动把 — 转成 – 或删掉,上线前务必检查源码。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










