2017-02-15 3 views
0

mysqlテーブル(照合 'utf8_unicode_ci')からデータを取得し、電子メールテンプレートを動的に入力してPHPMailer経由でメールを送信します。現在、取得されたデータの特殊文字は正しく表示されます。 mail.htmlのプレーンテキストの特殊文字はそうではありません。PHPMailerとCharSet 'utf-8'はutf8_unicode_ciで取得したデータを無視します

PHPMailerのドキュメントに従って... $ mail-> CharSet = 'utf-8';

$mail = new PHPMailer(); 
$mail->IsHTML(true); 
$mail->CharSet = 'utf-8'; 

mail.htmlのプレーンテキストの特殊文字は正しく表示されますが、データベースからフェッチされたデータはもう表示されません。

私には何が欠けていますか?

更新:

mysqli_set_charset($mysqli, 'utf8mb4'); 

... select文を実行しても問題が解決する直前。

+0

http://stackoverflow.com/a/42248356/4232159 – Mohammad

+0

何をお勧めしますか? –

+0

'$ mail-> CharSet = 'utf-8';'それは本当です。 – Mohammad

答えて

2

$mail->CharSet = 'utf8_unicode_ci';は間違っています。これはMySQLの照合であり、文字セットではありません。 $mail->CharSet = 'utf-8';はメールの面では正しいですが、データベースから戻ってくるデータが実際にはUTF-8になっていることを確認する必要があります。たとえば、this questionなどの方法についてのドキュメントがたくさんあります。また、MySQLの標準のUTF-8文字セットは完全ではないことにも留意してください。絵文字のようなものをサポートしたい場合は、utf8mb4 charsetを使用する必要があります。

+0

ヒントシンクロをありがとう。だからmysqli_set_charset($ mysqli、 'utf8mb4'); select文の直前で、すべてが正しく表示されます。どうもありがとう –

関連する問題