在UTF8的mailto特殊字符:主题=链接与展望(Special characters in UT

2019-09-18 06:33发布

我在重新编码是正式使用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。

不幸的是,客户想要保留这个直接的电子邮件中的链接,尽管直接有它下方的功能邮件形式!

是否有一个快乐的解决方案呢?

Answer 1:

如果您使用UTF-8试试这个:

<?php $subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; ?>


Answer 2:

究其原因,主题行有时会出现乱码是因为当你指定的编码,它并不适用于电子邮件标题。 你的主题行是在电子邮件标题。 下面是对主题行申请UTF8编码的功能:

function EncodeSubject($_subject)
{
    $encodedSubject = str_replace("&quot;", '"', $_subject);
    $encodedSubject = preg_replace('/[^x09\x20-\x3C\x3E-\x7E]/e', 'sprintf("=%02X", ord("$0"));', $encodedSubject);
    $encodedSubject = str_replace(' ', '_', $encodedSubject);
    return ="?utf-8?q" . $encodedSubject . "?=";
}


Answer 3:

您需要检查以下内容

1)HTML代码

<meta contentType="text/html; charset=UTF-8"/>

2)浏览器设置为IE查看 - >编码 - >的Unicode(UTF-8)

3)内容类型/ MIME类型应该是“ 应用程序/ x WWW的形式进行了urlencoded”



文章来源: Special characters in UTF8 mailto: subject= link and Outlook