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 如何正确检测编码?的主要内容,如果未能解决你的问题,请参考以下文章
在 windows10 中安装 Chilkat-11 后出错
带重定向的chilkat ActiveX HTTP组件的问题