6

私はLAMP Webサーバーを扱っています。ユーザーが mysql のテキスト フィールドに保存されているテキストを送信するために使用するフォームがあります。多くの場合、このテキストは Microsoft Office 製品からコピー アンド ペーストされているため、スマート クォートやエムダッシュが大量に含まれています。これらの文字は、データベースから取得して Web ページに表示すると正しく表示されますが、phpmailer クラスを使用して電子メールでテキストを送信するときに問題が発生します。次のようなものが得られます: – (emdash のはずです)。

重要なことの 1 つ: mysql でコンソールをプルアップし、emdash またはスマート クォートが含まれるフィールドを選択すると、コンソールに正しく表示されません。ページ (PDO を使用) でフィールドを選択して表示すると、ブラウザーで (この場合は emdash として) 正しく表示されます。

phpmailer で文字セットを選択する方法があるかどうか (おそらくどこかで簡単な設定でしょうか?)、またはこの問題を回避するより良い方法があるかどうかはわかりません。ただし、「スマートクォートとエムダッシュを検索して通常の同等のものに置き換える」ことは、私が探している答えではないことを明確にする必要があると思います(うまくいけば、それが唯一の解決策ではありません)。

私はこの情報を見つけました:
私のphpウェブページ:utf-8
mysqlクライアントエンコーディング:latin1
mysqlサーバーエンコーディング:latin1
phpmailer文字セット:iso-8859-1

4

2 に答える 2

6

phpmailerでは、次のコードを使用して文字セットを切り替えることができます。

$myMail->CharSet  = "UTF-8";

これで私の問題は解決しました。活版印刷の引用符と二重ダッシュが、phpmailerからの私のメールに期待どおりに表示されます。これはちょっとおかしな質問だったかもしれません(赤面)。パズルのすべてのピースが使用しているエンコーディングを調べるように促してくれたShrapnel大佐に感謝します。私はあなたに投票しますが、評判はありません。

宿題に興味のある人にとって、このリンクは私がエンコーディングの基本を理解するのに本当に役立ちました:http:
//www.joelonsoftware.com/articles/Unicode.html

于 2010-12-21T21:41:26.563 に答える
0

PEAR Mail_MIME パッケージを使用すると、http://pear.php.net/manual/en/package.mail.mail-mime.get.php を介してこれを行うことができます 以前にこの機能を使用したことは確かですが、肯定的ではありません。

複数のデータ ソースがある場合は、 iconvを使用して文字セットを 1 つに正規化する必要がある場合もあります。

于 2010-12-21T18:55:29.527 に答える