西班牙语字符(áéíúñ)无法正确显示apple mail php mail

时间:2018-11-28 16:44:31

标签: php email character-encoding

大家好,我需要一些帮助。。目前,我正在使用PHP mail()函数。西班牙语字符将出现在我的邮件(áéíúññ)中。所以通常我发送邮件时不能正确显示。所以我将这一行添加到HTML文件中

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

这行是php文件

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

和总邮件功能是

        $message = "<strong>Nom: </strong>".$_POST["info_Nom"]."<br />";
        $message .= "<strong>Prenom: </strong>".$_POST["prenom"]."<br />";
        $message .= "<strong>Téléphone : </strong>".$_POST["Phone"]."<br />";

        $subject = 'Nouveau message ' . $_POST["info_Nom"];
        $headers = "From: ".$_POST["mail"]."\n";
        $headers .= "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

        $send = mail($to,$subject,$message,$headers);

然后在我的Android gmail应用程序和Windows Mail中运行正常。但是在苹果邮件中,它无法正确显示mail app link。这样显示

Nom: test
Prenom: test
Téléphone : 08019238012

需要一些帮助。预先感谢

2 个答案:

答案 0 :(得分:3)

如果您的应用程序使用UTF-8,并且您想使用ISO-8859-1生成电子邮件,则实际上需要convert将文本从源编码转换为目标编码。否则,这就像将picture.jpg重命名为movie.mp4并希望获得视频。例如:

$source = 'Ñ€';
$target = mb_convert_encoding($source, 'iso-8859-1', 'utf-8');
var_dump(bin2hex($source), bin2hex($target));
string(10) "c391e282ac"
string(4) "d13f"

请注意,ISO-8859-1中的0x3F?。这是当您拥有不属于目标编码的字符时得到的替换字符,例如€符号就是这种情况。

现在,不要这样做。我们快到了2019年。到处都使用UTF-8,而忘了像ISO-8859-1或CP850这样的古老编码。

答案 1 :(得分:2)

正如我在评论中所说;您需要对所有内容使用相同的字符编码,即UTF-8。

即:Content-type:text/html;charset=UTF-8,包括保存文件。