防止 unicode 字符变成表情符号(尤其是在 gmail 中)

Prevent unicode characters from turning into emojis (especially in gmail)

这个问题之前有人问过,但在有人将其标记为重复之前,请听我说完。

某些 unicode 字符会在 gmail.I 中自动显示为表情符号已尝试应用 'variation-selector' 但没有任何作用。事实上,从 wikipedia

复制 table 时

将所有带修饰符的 unicode 包含到电子邮件中,它将在 gmail 中显示以下内容

如您所见,所有修饰符都被忽略,它只会显示表情符号。我不想要表情符号的原因是为了让电子邮件具有专业的语气。我真的一直想要 base+VS15 版本,但 gmail 出于某种原因不允许它:(.

当我在 phone.

上打开电子邮件时,不会出现此问题

您想回答什么问题?您是否希望这些字符在 GMail 网络应用程序中以文本形式显示(在浏览器中查看)?或者,您是否希望这些字符在 GMail 发送的电子邮件消息中显示为作者?或者,您希望这些字符在 iOS 或 Android 的 Gmail 应用程序中以文本形式显示吗?这些都是不同的情况。

当我将您显示的维基百科 table 粘贴到 Firefox 浏览器上的 GMail 消息组合 window 中时,我看到了与您在第二个示例中显示的相同的内容:“base+ VS15(文本)”行显示与上下行相同。但是,当我查看 GMail 在组合 window 中生成的 HTML 时,我发现了一些非常有趣的东西。

例如,“base+VS15(文本)”行“26A0”列中的单元格具有以下内容(为便于阅读而添加换行符):

<td><img data-emoji="⚠" class="an1 CToWUd" alt="⚠" aria-label="⚠" 
src="https://fonts.gstatic.com/s/e/notoemoji/14.0/26a0/32.png" 
loading="lazy">︎&#xFE0E;</td>

注意:在实际的HTML中,序列&#xFE0E;是文字字符U+FE0E VARIATION SELECTOR-15,而不是HTML 十六进制实体引用。事实证明,Whosebug 编辑器似乎丢弃了文字 U+FE0E 字符。我必须用某种东西来表示它才能使其在此答案中可见。

因此,GMail 似乎选择用 <img> 标记替换文字 U+26A0 WARNING SIGN 字符,指示浏览器在 URL [=19= 处显示图像] 您在 GMail 中观察到的。但是,GMail 不会丢弃 U+FE0E VARIATION SELECTOR-15。该字符仍然存在,就在 <img> 标记之后。

当我将该电子邮件发送到另一个电子邮件程序时(我使用 Thunderbird),我看到 table 的方式与您在第一个示例中显示的方式相同。 “base+VS15(文本)”行显示下方的行不同。

当我查看收到的电子邮件的来源,并查看 table 的同一单元格时,我看到以下内容:

=E2=9A=A0=EF=B8=8E

这是U+26A0 U+FE0E这两个字符,用UTF-8表示,然后用MIME十六进制转义表示。这证明 GMail 发送的电子邮件不再具有 GMail 的 <img> 标记,并且再次具有原始字符。

那么,您是否希望这些字符在 GMail 网络应用程序中以文本形式显示(在浏览器中查看)?我认为 GMail 选择拒绝你。他们可能做出了一个设计决定,即无论用户可能安装了什么浏览器或字体,确保用户看到每个表情符号的某种形式比让 VS15 文本显示正确更好。

但是,您希望这些字符在 GMail 发送的电子邮件消息中显示为作者吗?我认为 GMail 无需特别努力即可为您提供。

更难看出 iOS 或 Android 的 GMail 应用程序 window 显示的组成,所以我不打算尝试这样做。

顺便说一句,我通过使用 Firefox developer tool、按住 control 并单击该单元格内容的“检查元素”,然后单击标签并使用control-click…“Copy…Outer HTML”复制 HTML,然后将 HTML 粘贴到纯文本编辑器中。