将forceUTF8与包含来自Gmail电子邮件的表情符号的电子邮件正文一起使用时,会将表情符号转换为“?” Gmail表情符号是什么类型的表情符号?

问题描述

我为标题感到抱歉,但是我很难描述自己的想法。所以我们开始

我目前有一个解析电子邮件(不一定是来自Gmail的电子邮件)的脚本,可以在其中获取电子邮件正文并对其进行处理。使用此mail parser

效果很好

我开始注意到有时脚本会在收到某些电子邮件时中断。我终于意识到那是体内出现表情符号的时候,但并非每次都中断。我也会收到其他也包含表情符号的电子邮件

经过更多测试(到目前为止),我现在知道当我从Gmail电子邮件中收到带有表情符号的电子邮件时,它会中断。

有什么区别?

所以我了解到,基于Gmail的表情符号非常奇怪(对我来说是这样)。它们不是图像,不是十六进制...我无法告诉任何事情。它们只是图片(例如文本),而不是图像。让我向您展示一些示例。

Yahoo(以图片形式出现)

enter image description here

Gmail (以???形式出现)

enter image description here

即使直接从我的数据库中查看它,我也看到了图片。我可以像文字一样突出显示它,也可以像文字一样删除它,但是它不是图像。

enter image description here

现在是MysqL

我了解到我的脚本被破坏的原因是因为必须从连接到表的所有数据库都将数据库设置为utf8mb4。我进行了更改,它现在不会破坏脚本,并且可以很好地存储表情符号。

现在为forceUTF8

我一直在使用forceUTF8来清理身体,因为我正在处理其他字符,例如其他语言。

我现在遇到的问题是,当我尝试使用Encoding::fixUTF8($body);进行清理时,它将使基于Gmail的表情符号变成?

最终问题:

我的主要问题是:

为什么我尝试清理表情符号时将其转换为?

我更重要的问题是:

当涉及到不是图像或十六进制且更像文本的表情符号时,我该怎么办?我觉得,如果我更好地了解自己正在处理的问题,也许可以弄清楚我的问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)