0

わかりました。Thunderbird に送信された電子メールを取得し、メッセージの一部を html に変換して MySQL に保存するスクリプトがあります。すべてのファイル、すべての書き込み部分は UTF-8 に設定されています。最後に、CRM (PHP5.3 で期待される出力 Chrome および Firefox で記述) の作業の最後に、他の情報と共にメッセージを取得し、GMail に似たものを従業員の「タスク リスト」として表示します。

私が抱えている問題は、まだ推測していない場合、一部の顧客の電子メールが明らかに異なるエンコーディングを使用していることです。したがって、電子メールの一部 (すべてではなく、大部分ではありません) では、すべての文字が正しく表示されません。

最初はutf8_encode、電子メール メッセージを正しく表示するために を使用しました。これは、データベースから送信されるほとんどの電子メール メッセージに役立ちますが、文字が正しくないものもいくつかあります。

DB では、これらの「悪いアポストロフィ」は として表示されますが、通過’後は. 必要に応じて推測して変更するために、さまざまなエンコーディングを試しましたが、これは他の電子メールの大部分を傷つける傾向があります.utf8_encode�??

パイプの一方の端または他方の端で、これらのいくつかのメールを他のすべてに一致させる方法、または少なくとも最後に可能なpreg_replaceフィルターを作成する方法など、何か提案はありますか?

アップデート

によると、悪い文字を含む電子メールでさえ最後のphpに渡されるutf-8ようmb_detect_encodingです。これは、追加のエンコードの前です。iconv問題のあるものを検出しますが、これは実際にそれらを解決する方法を私に与えずFALSE、それが提供するはずの単純なリターンの代わりにphpエラーボックスを画面に表示するだけなので、これも解決策ではないようです.

4

2 に答える 2

2

問題は、メールのエンコーディングがわからないことです。utf8_encodeISO-8859-1 から UTF-8 にのみエンコードします。したがって、 mb_detect_encodingでエンコーディングを取得してから、 iconvで UTF-8 に変換することができます。

Content-Type編集:メールの の文字セットを読み取ろうとすることもできます。

于 2013-07-24T13:24:16.847 に答える