PHP 表单在发送电子邮件时将西里尔文显示为问号
PHP form displays cyrillic as question marks when email message is sent
我的网站上有一个联系表,它依赖 PHP 来完成它的工作。问题是,当你发送一条用西里尔字符写的消息时,我只会收到一堆问号。
下面是该表单的代码:
<?php header('Content-Type: text/html; charset=utf-8');
header('Content-Transfer-Encoding: 8bit');
if(isset($_POST['email'])){
$mailTo = "ameli_cakes@abv.bg";
$subject = "mail from web";
$body = "New message from web
<br><br>
FROM: ".$_POST['email']."<br>
NAME: ".$_POST['name']."<br>
SUBJECT: ".$_POST['subject']."<br>
COMMENTS: ".$_POST['message']."<br>";
$headers = "To: Ameli Cakes <".$mailTo.">\r\n";
$headers .= "From: ".$_POST['author']." <".$_POST['email'].">\r\n";
$headers .= 'Content-Type: text/HTML; charset=utf-8' . "\r\n";
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\r\n";
//envio destinatario
$mail_success = mail($mailTo, $subject, $body, $headers);
}
?>
请记住,我对 PHP 的了解非常有限,我不是这段代码的作者。
页面的 HTML 我相信有合适的元标记,您可以在下面查看:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
PHP 文件本身也被编码为 utf-8(用 notepad++ 检查)。
下面是一个例子:
我使用表单发送了消息
This is non Cyrillic text, now follows some Cyrillic text. Поздрави
другар!
我收到了
This is non Cyrillic text, now follows some Cyrillic text. Поздрави другар!!
非常感谢你能给我解决这个问题的任何帮助,非常感谢你花时间阅读这篇文章。
PS:已修复!!检查上面的代码,看看它最终是如何工作的。
您的整个代码具有相同的字符集很重要,以避免出现字符显示不正确的问题。
有一些设置需要正确定义,我强烈建议使用 UTF-8(正如您已经在 HTML 中设置的那样),因为它包含您需要的大多数字母(斯堪的纳维亚语, 希腊语, 阿拉伯语).
下面我列出了一些必须设置为特定字符集的内容。
Headers
将 HTML 和 PHP headers 中的字符集设置为 UTF-8
PHP: header('Content-Type: text/html; charset=utf-8');
(PHP headers 必须放在 any 输出之前(回声,空格,
HTML)!)
HTML: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
(HTML-headers 放在 <head>
/ </head>
标签内)
File-encoding
- 同样重要的是 .php-file 本身是 UTF-8 编码的。如果您使用 Notepad++ 编写代码,可以在任务栏上的 "Format" drop-down 中完成。
你可以看看这个 Whosebug post:UTF-8 all the way through。
您的电子邮件中需要两个 headers。
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit
在你的代码中应该是这样的:
$headers .= "Content-Type: text/html; charset=utf-8";
$headers .= "Content-Transfer-Encoding: 8bit";
P.S.
流
D0 9F D0 BE D0 B7 D0 B4 D1 80 D0 B0 D0 B2 D0 B8 20 D0 B4 D1 80 D1 83 D0 B3 D0 B0 D1 80 21 21
问候朋友!! ← 作为 UTF-8
ТоздѢави РхѢугаѢ!! ← 作为 Windows-1251
我的网站上有一个联系表,它依赖 PHP 来完成它的工作。问题是,当你发送一条用西里尔字符写的消息时,我只会收到一堆问号。
下面是该表单的代码:
<?php header('Content-Type: text/html; charset=utf-8');
header('Content-Transfer-Encoding: 8bit');
if(isset($_POST['email'])){
$mailTo = "ameli_cakes@abv.bg";
$subject = "mail from web";
$body = "New message from web
<br><br>
FROM: ".$_POST['email']."<br>
NAME: ".$_POST['name']."<br>
SUBJECT: ".$_POST['subject']."<br>
COMMENTS: ".$_POST['message']."<br>";
$headers = "To: Ameli Cakes <".$mailTo.">\r\n";
$headers .= "From: ".$_POST['author']." <".$_POST['email'].">\r\n";
$headers .= 'Content-Type: text/HTML; charset=utf-8' . "\r\n";
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\r\n";
//envio destinatario
$mail_success = mail($mailTo, $subject, $body, $headers);
}
?>
请记住,我对 PHP 的了解非常有限,我不是这段代码的作者。
页面的 HTML 我相信有合适的元标记,您可以在下面查看:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
PHP 文件本身也被编码为 utf-8(用 notepad++ 检查)。
下面是一个例子:
我使用表单发送了消息
This is non Cyrillic text, now follows some Cyrillic text. Поздрави другар!
我收到了
This is non Cyrillic text, now follows some Cyrillic text. Поздрави другар!!
非常感谢你能给我解决这个问题的任何帮助,非常感谢你花时间阅读这篇文章。
PS:已修复!!检查上面的代码,看看它最终是如何工作的。
您的整个代码具有相同的字符集很重要,以避免出现字符显示不正确的问题。
有一些设置需要正确定义,我强烈建议使用 UTF-8(正如您已经在 HTML 中设置的那样),因为它包含您需要的大多数字母(斯堪的纳维亚语, 希腊语, 阿拉伯语).
下面我列出了一些必须设置为特定字符集的内容。
Headers
将 HTML 和 PHP headers 中的字符集设置为 UTF-8
PHP:
header('Content-Type: text/html; charset=utf-8');
(PHP headers 必须放在 any 输出之前(回声,空格, HTML)!)HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
(HTML-headers 放在<head>
/</head>
标签内)
File-encoding
- 同样重要的是 .php-file 本身是 UTF-8 编码的。如果您使用 Notepad++ 编写代码,可以在任务栏上的 "Format" drop-down 中完成。
你可以看看这个 Whosebug post:UTF-8 all the way through。
您的电子邮件中需要两个 headers。
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit
在你的代码中应该是这样的:
$headers .= "Content-Type: text/html; charset=utf-8";
$headers .= "Content-Transfer-Encoding: 8bit";
P.S.
流
D0 9F D0 BE D0 B7 D0 B4 D1 80 D0 B0 D0 B2 D0 B8 20 D0 B4 D1 80 D1 83 D0 B3 D0 B0 D1 80 21 21
问候朋友!! ← 作为 UTF-8
ТоздѢави РхѢугаѢ!! ← 作为 Windows-1251