我真的不明白为什么当用户发送电子邮件请求时,主题和消息是完美的(没有逃避,重音符号,符号......)除了名字和姓氏外,一切都好!
例如,如果我的用户全名是:在我的客户端测试è'ü-x-'z << / strong>(MS outlook),我看到:测试Ã''ü-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]保存在DB而不是POST中,在我使用UTF8的所有PHP页面中:
<meta charset="utf-8">
header( 'Content-Type: text/html; charset=utf-8' );
mysqli_query( $con, "SET NAMES 'utf8'" ) or die( 'Error (charset)' );
我怎么解决?也许有PHP函数?
答案 0 :(得分:0)
虽然您应该理想地解决其他地方的编码问题,但您可以使用iconv函数尝试转换。
iconv ( string $in_charset , string $out_charset , string $str )
可以应用于您的代码:
iconv("ISO-8859-1", "UTF-8", $user['name'])
困难在于识别你的来源的编码,如果你知道这一点,那么你就可以去了。