PHP Contact表单输入不支持变音符号

时间:2019-03-13 14:06:47

标签: php html contact-form

我的php联系人表单代码有小问题。 我的网站使用变音符号,效果很好。但是,使用任何[0-9]变音符号后,提交后我的联系表单输入看起来都像“ÄÅ¡Å”。

PHP文件:

<?php


$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$service = $_POST['service'];      
$message = $_POST['message'];      

$from = $name; 
$to = 'info@email.com'; 
$subject = "$name - $service";

$body = "Jméno zákazníka: $name\nE-Mail zákazníka: $email\nTelefonní číslo: $phone\nservice: $service\nZpráva: $message ";

if (mail ($to, $subject, $body, $from, $headers)) {
    $headers = array("Content-Type: text/html; charset=UTF-8");
} else {
    echo "Failed";
}


?>

提交联系表格后的电子邮件输出:

First Last Name

Jméno zákazníka: Name
E-Mail zákazníka: email
Telefonní císlo: phone number
service: havárii
Zpráva: ÄÅ¡Å

名称,电子邮件,电话,服务,消息等“标头”是用变音符号写的,但在此输入例如:Zpráva:由于某种原因,不支持ÄÅ¡Å。

还html文件包括

<meta charset="utf-8">

更新1

试图将$ headers = array(“ Content-Type:text / html; charset = UTF-8”);在提交联系表格之前,但未进行任何更改。仍然不支持以下任何字符:ěščřžýáíé

更多信息

还添加了最容易出现问题的html部分

<div class="col-lg-12">
<textarea name="message" id="" cols="30" rows="10" placeholder="Zpráva"> 
</textarea>
</div>

1 个答案:

答案 0 :(得分:1)

您需要将标头作为mail()的第4个参数:

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$service = $_POST['service'];      
$message = $_POST['message'];      

$from = $name; 
$to = 'info@email.com'; 
$subject = "$name - $service";

$body = "Jméno zákazníka: $name\nE-Mail zákazníka: $email\nTelefonní číslo: $phone\nservice: $service\nZpráva: $message ";

$headers = [
    'Content-Type' => 'text/plain; charset=UTF-8',
    'From' => $from,
];

if (mail($to, $subject, $body, $headers)) {
    echo "Sent";
} else {
    echo "Failed";
}

请注意,这是用于纯文本电子邮件,而不是HTML电子邮件。

From的格式应为:Name <email@example.com>,因此,如果您没有信息,请不要包含它