PHP 邮件中无法正确显示法语字符

问题描述 投票:0回答:2

我有一个基本的 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 格式。

感谢帮助和指导。

迈克尔。

编辑:

我明白了这一点。请参阅下面我的回答。

email utf-8 character-encoding php
2个回答
4
投票

我弄清楚是否有人需要类似的帮助:

我改变了这一行:

$fieldenquiry = utf8_encode($_POST['fieldenquiry']);

对此:

$fieldenquiry = utf8_encode(htmlentities($_POST['fieldenquiry'], ENT_QUOTES, "UTF-8"));

我使用 htmlentities() 函数并在参数中指定 UTF-8。

这完全解决了问题。希望它对某人有帮助。


0
投票

utf8_encode
已被弃用,因此建议您不要使用建议的答案。

有关弃用通知的更多信息:

utf8_encode 用法

© www.soinside.com 2019 - 2024. All rights reserved.