1

メールを解析して、メールの内容を Web サイトに投稿しようとしているところに問題があります。メールには日本語または英語が含まれる場合があります。日本語は Web サイト上で 99% 正しく表示されますが、ときどき文字が別の文字と入れ替わったり、ゴミとして表示されたりします。

電子メール本文の適切なエンコーディングを取得するために使用されるコードは次のとおりです。

$post->content = quoted_printable_decode($parser->getMessageBody('text'));

$isISO2022 = $parser->isISO2022();

$post->content = ($isISO2022)
             ? mb_convert_encoding($post->content, 'UTF-8', 'iso-2022-jp')
             : mb_convert_encoding($post->content, 'UTF-8', mb_detect_encoding($post->content));

$post->save();

パーサーの isISO2022 関数:

public function isISO2022() {
        $isISO2022 = false;

        foreach ($this->parts as $part) {
            if (isset($part['headers']['content-type']) && preg_match('/iso-2022-jp/i',$part['headers']['content-type'])) {
                $isISO2022 = true;
            }
        }

        return $isISO2022;
    }

何が起こっているのか誰にも考えがありますか?

追加: iso-2022-jp でサポートされていない特定の文字があり、代わりに iso-2022-jp-ms を使用する必要があると聞きましたが、iso-2022-jp-ms を使用しようとすると、無効なエンコーディングを示します。また、正しく表示されない文字は基本的な文字であり、普遍的にサポートされるべきであるように思えます。

4

0 に答える 0