UTF-8电子邮件编码问题-您能在此代码中看到错误吗?


UTF-8 email encoding issue - can you see an error in this code?

你能发现以下代码中的任何问题吗?这意味着从我们网站发送的电子邮件没有被编码为UTF-8,并且显示随机字符替换正确的字符?邮件源示例:

Nekdo pr�ve prispel na V� projekt.

电子邮件表单页面被编码为UTF-8,它将数据发送到一个单独的sendresults.php页面(也是一个UTF-8编码的页面),其中包含以下代码。也许我在这里缺少编码,以确保电子邮件以UTF-8发送:

<?php
$subject = 'Contact from mywebsite.com';
$emailadd = 'info@mywebsite.com';
$url = 'http://www.mywebsite.com/contactconfirmation.php';
$req = '1';
$text = "Results from form:'n'n";
$space = ' ';
$line = '
';
foreach ($_POST as $key => $value)
{
if ($req == '1')
{
if ($value == '')
{echo "$key is empty";die;}
}
$j = strlen($key);
if ($j >= 20)
{echo "Name of form element $key cannot be longer than 20 characters";die;}
$j = 20 - $j;
for ($i = 1; $i <= $j; $i++)
{$space .= ' ';}
$value = str_replace(''n', "$line", $value);
$conc = "{$key}:$space{$value}$line";
$text .= $conc;
$space = ' ';
}
mail($emailadd, $subject, $text, 'From: '.$emailadd.'');
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
?>

您的电子邮件代码看起来很好;罪魁祸首是$body,它似乎包含ISO-8859-1字符(或来自其他编码的字符)。您需要检查您的应用程序以查看发生这种情况的地方。

如果$body来自数据库,它可能是经典的"mySQL默认连接字符集是ISO-8859-1"问题(在链接中搜索defaults to a latin1 connection)。