好的,所以我们有一个脚本,它接收发送到 Thunderbird 的电子邮件,将部分消息转换为 html 并将其保存到 MySQL。每个文件,每个写入的部分都设置为 UTF-8。最后,在我的工作结束时,CRM(用 PHP5.3 编写,预期输出 Chrome 和 Firefox),我提取消息以及其他信息并显示类似于 GMail 的内容,但作为我们员工的“任务列表”。
我遇到的问题,如果你还没有猜到,一些客户的电子邮件显然使用不同的编码。因此,一些(不是全部,当然也不是大多数)电子邮件不能正确显示所有字符。
起初,我使用它utf8_encode
来使电子邮件看起来正确,这有助于大多数来自数据库的电子邮件,但是,有一些带有错误字符的电子邮件。
在 DB 中,这些“坏撇号”显示为’
,但在utf8_encode
它们出现之后为�??
。我尝试了各种编码来根据需要进行猜测和更改,但是,这往往会损害绝大多数其他电子邮件。
任何建议,在管道的一端或另一端,我如何让这几封电子邮件与其他所有内容相匹配,或者我如何至少preg_replace
在最后创建一个可能的过滤器或其他什么?
更新
似乎即使是带有错误字符的电子邮件也会utf-8
按照mb_detect_encoding
. 这是在任何额外编码之前。iconv
确实检测到有问题的问题,但这确实让我无法解决它们,只是在屏幕上放置一个 php 错误框,而不是FALSE
它说它应该给出的简单返回,所以这似乎也不是解决方案.