0

我真的不明白为什么当用户发送电子邮件请求时,主题和消息是完美的(没有转义、重音、符号、..),除了姓名和姓氏之外,一切都很好!

例如,如果我的用户全名是:Test è'ü-x-'zî in my client (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 中,在我所有的 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 回答