Chilkat CkEmail 如何正确检测编码?

Posted

技术标签:

【中文标题】Chilkat CkEmail 如何正确检测编码?【英文标题】:Chilkat CkEmail how to detect encoding properly? 【发布时间】:2020-01-08 14:53:03 【问题描述】:

我使用 Chilkat 组件。我遇到了一个问题。我有一个电子邮件 mime 字符串。有一个html正文。在大多数情况下,它是 Content-Transfer-Encoding:quoted-printable。我需要获取 html 正文并显示它的可读性。我是这样做的,php代码:

$data = new CkByteData();
$this->ckEmail->GetMbHtmlBody($this->ckEmail->charset(), $data);
$body = $data->getBytes();

似乎在大多数情况下它都有效。但有时它会显示不可读的字符。我检查了$this->ckEmail->charset() 是否返回了“utf-8”,但是当我尝试“iso-8859-1”时,它就可以工作了。我在这里对这些编码感到困惑。我是否需要检测 html 正文(或文本正文)的编码,然后使用 GetMbHtmlBody 正确显示它?如何做好?我想用任何编码正确显示所有字符。

【问题讨论】:

【参考方案1】:

如果生成消息的邮件客户端正确执行,则text/html Content-Type 标头上的字符集参数将是正确的,您将能够使用它。

然而,这是一个很大的“如果”,因为邮件在现实世界中是出了名的损坏,您经常必须检测text/html MIME 部分的 HTML 内容中的字符集并改用它。

【讨论】:

以上是关于Chilkat CkEmail 如何正确检测编码?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Chilkat 库构建项目

如何检测字符串字节编码?

在 windows10 中安装 Chilkat-11 后出错

带重定向的chilkat ActiveX HTTP组件的问题

使用 Chilkat 和 SQL Server 将单个电子邮件附件保存到 BLOB

python使用chilkat解析出邮件文本中的发送to和抄送cc