我在重新编码是正式使用ISO-8859-1字符编码一个网站的最后阶段,但现在整个UTF-8。
问题是,这个mailto HREF链接的主题部分没有与Outlook,当使用特殊字符的工作。 我得到的通常的乱码字符表示,指示明显的字符编码问题的链接被点击的时候和新邮件窗口在Outlook弹出。
我试过rawurlencode()来解决部份的问题,但是这似乎并没有与Outlook工作...
<a href="mailto:blah@blah.com?subject=<?=rawurlencode($subj);?>">send email</a>
所以后来想,Outlook必须坚持不同的编码,并试图UTF-8的目标字符串第一解码...
<a href="mailto:blah@blah.com?subject=<?=rawurlencode(utf8_decode($subj));?>">send email</a>
答对了! 伟大的工程展望。 但现在无法在一切:(
我找不到工作翻过所有邮件客户端的解决方案。
它好工作在所有邮件客户端时,整个页面显示了在ISO 8859。 但不是当页面内容是utf-8。
不幸的是,客户想要保留这个直接的电子邮件中的链接,尽管直接有它下方的功能邮件形式!
是否有一个快乐的解决方案呢?
如果您使用UTF-8试试这个:
<?php $subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; ?>
究其原因,主题行有时会出现乱码是因为当你指定的编码,它并不适用于电子邮件标题。 你的主题行是在电子邮件标题。 下面是对主题行申请UTF8编码的功能:
function EncodeSubject($_subject)
{
$encodedSubject = str_replace(""", '"', $_subject);
$encodedSubject = preg_replace('/[^x09\x20-\x3C\x3E-\x7E]/e', 'sprintf("=%02X", ord("$0"));', $encodedSubject);
$encodedSubject = str_replace(' ', '_', $encodedSubject);
return ="?utf-8?q" . $encodedSubject . "?=";
}
您需要检查以下内容
1)HTML代码
<meta contentType="text/html; charset=UTF-8"/>
2)浏览器设置为IE查看 - >编码 - >的Unicode(UTF-8)
3)内容类型/ MIME类型应该是“ 应用程序/ x WWW的形式进行了urlencoded”