Unicode 变体选择符 VS15:当你的 ↩ 变成了 Emoji
来源:benjaminwil.info — 2026-07-13
📋 概述
作者发现网站上脚注返回链接的 ↩(U+21A9)在手机 RSS 阅读器中渲染成了 Emoji 而非文字版本。根源在于未指定 Unicode 变体序列——U+21A9 同时拥有文字和 Emoji 两种呈现方式。解决方案是附加 VS15(U+FE0E)强制文字呈现。但问题更深层:超过 1000 个码点存在同样歧义。
🔑 核心要点
- U+21A9 等1000+ 个 Unicode 码点同时拥有文字和 Emoji 两种呈现方式
- 不加变体选择符时,由渲染程序自行决定呈现——不同平台可能完全不同
- 解决方案:在字符后附加 U+FE0E(VS15) 强制文字呈现,或 U+FE0F(VS16)强制 Emoji
- 对于元内容字符(脚注链接等)应固定为文字;但正文中的表情可能因强制文字而翻译错误
💡 金句
这不是 bug——这是设计如此。但超过一千个字符同时有两种身份,这本身就是个设计问题。当同一个字符在一台设备上是箭头、另一台是 Emoji 时,谁来决定对错?
👍 0👎 0
← 返回 Lobsters 首页