0

ユーザーが電子メール リクエストを送信するときに、件名とメッセージが完全である (エスケープ、アクセント、記号などがない) 理由が本当にわかりません。姓と名以外はすべて問題ありません!

たとえば、ユーザーのフル ネームが次の場合: Test è'ü-x-'zîクライアント (MS Outlook) で次のように表示されます: Test è'ü-x-'zî

メールを送信するコードは次のとおりです。

$subject = stripslashes( $subject );
$message  = stripslashes( $message );

$headers  = "MIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n";

// problem here
$headers .= "From: $user[name]<test@example.com>\nReply-to: $user[name]<$user[email]>\n\n";

@mail( $email, $subject, $message, $headers );

PS: $user[name] は、POST ではなく DB に保存されます。すべての PHP ページで、UTF8 を使用します。

<meta charset="utf-8">

header( 'Content-Type: text/html; charset=utf-8' );

mysqli_query( $con, "SET NAMES 'utf8'" ) or die( 'Error (charset)' );

どうすれば解決できますか?おそらくPHP関数がありますか?

4

1 に答える 1

1

エンコーディングの問題は別の場所で解決するのが理想的ですが、iconv関数を使用して変換を試すことができます。

iconv ( string $in_charset , string $out_charset , string $str )

コードに適用できます:

iconv("ISO-8859-1", "UTF-8", $user['name'])

難しいのは、ソースのエンコーディングを識別することです。これがわかっている場合は、問題ありません。

于 2013-09-02T15:16:28.830 に答える