我有一个基本的 PHP 邮件表单,但无论我做什么,如果语言是用法语口音书写的,我似乎无法在发送后正确显示字符。
我使用的例句是:
Bonjour,ceci 是测试特使和 PHP 分析器的消息 不,不,不,不,不,不,不,不,不,不,不,不,不。人物不 devraient être rendus de manière appropriée comme prevu dans le 法语词典。
但结果是:
Bonjour,ceci 是测试特使的消息,请使用 PHP 分析器进行测试 不,不,不,不,不,不,不,不,不,不,不,不,不。人物不 devraient ätre rendus de manière适当的comme prevu dans le 法语词典。
正如您所看到的,一旦在电子邮件中收到带有重音符号的字符,它们就会被搞乱。
我正在这样处理我的消息变量:
$fieldenquiry = utf8_encode($_POST['fieldenquiry']);
那么我就这样发送:
$cc = "[email protected]";
$subject = "Website Enquiry";
$message = '<html><body>';
$message .= "<p><strong>Enquiry</strong><br />" . nl2br($fieldenquiry) . "</p>";
$message .= "</body></html>";
$headers = "From: " . $fieldemail . "\r\n";
$headers .= "Cc: " . $cc . "\r\n";
$headers .= "Reply-To: ". $fieldemail . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
mail($to, $subject, $message, $headers);
无论如何,我都不是 PHP 开发人员。该表单的工作原理是发送等,但我无法弄清楚为什么字符会混乱。我正在对 POST 变量进行编码,并使用 UTF-8 字符集发送 HTML 格式。
感谢帮助和指导。
迈克尔。
编辑:
我明白了这一点。请参阅下面我的回答。
我弄清楚是否有人需要类似的帮助:
我改变了这一行:
$fieldenquiry = utf8_encode($_POST['fieldenquiry']);
对此:
$fieldenquiry = utf8_encode(htmlentities($_POST['fieldenquiry'], ENT_QUOTES, "UTF-8"));
我使用 htmlentities() 函数并在参数中指定 UTF-8。
这完全解决了问题。希望它对某人有帮助。