如何在PHP中从IMAP检索Unicode字符?

时间:2016-10-10 00:31:15

标签: php unicode imap

我正在尝试解析一部分用英文写的部分电子邮件,部分使用PHP用日语编写。这是我到目前为止的代码:

if ($mbox = imap_open($mailbox, $username, $password)) {

    $inbox = imap_check($mbox);
    $total = (int) $inbox->Nmsgs;
    $min = max(1, $total - 10);

    // fetch 10 most recent emails
    if ($total > 0 && ($emails = imap_fetch_overview($mbox, "{$min}:{$total}"))) {

        foreach ($emails as $email) {

            $body = imap_body($mbox, $email->uid, FT_UID);

            // for testing purposes
            echo $body;

            // parsing logic here

        }
    }
}

因为你可以看到我只是回应了电子邮件的明文主体,只是为了测试一些东西,这是我运行这个脚本时得到的回应响应的一部分:

  

当天的日语单词是:ç“·ã®å

但是,根据电子邮件中的实际内容,以下是我代替的内容:

  

你当天的日语单词是:男の子

很明显,在翻译中会丢失一些东西(双关语)。我正在使用一些简单的字符串操作来尝试解析日文字符,然后将它们插入到MySQL数据库中。但是,它目前正在插入那些gobbledygook字符。我错过了什么?

编辑:我使用的是PHP 5.4.45版本

1 个答案:

答案 0 :(得分:0)

所以我不确定如何在PHP 5中使用它。我决定尝试将我的服务器升级到PHP 7,突然所有代码都开始工作了。