当前位置: 首页 > 知识库问答 >
问题:

UTF8 mailto中的特殊字符:主题=链接和Outlook

段干弘扬
2023-03-14

我正处于重新编码一个正式使用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-1中时,它在所有邮件客户端上都运行良好。但当页面内容为utf-8时,情况并非如此。

不幸的是,客户希望保留这个直接的电子邮件链接,尽管它下面有一个正常工作的邮件表单!

有什么好的解决方法吗?

共有3个答案

史默
2023-03-14

您需要检查以下内容

1) HTML代码

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

2)IE视图的浏览器设置——

3) 内容类型/MIME类型应为“application/x-www-form-urlencoded”

慕容宏邈
2023-03-14

主题行有时被篡改的原因是,当您指定编码时,它不适用于电子邮件标题。您的主题行位于电子邮件标题中。以下是在主题行应用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 . "?=";
}
孟栋
2023-03-14

如果您使用utf-8,请尝试以下操作:

<?php $subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; ?>
 类似资料:
  • 问题内容: 我使用特殊字符(瑞典字母åäö)。 现在,我有一些文件夹,其中包含分类图像。文件夹按类别命名。 我最多允许在我的网站上显示5张图片,每张图片以1-5卢比结尾。但是,我的问题是,每当文件夹名称包含特殊字符时,file_exists返回false,即找不到文件。即使它在那里。 所有文档均为utf-8格式。 当文件夹名称中没有特殊字符时,此方法有效。 如果您需要更多输入,请告诉我 问题答案:

  • 问题内容: 我正在为法国客户做一些工作,因此需要处理带重音符号的字符。但是我遇到了很多困难,希望解决方案很简单,并且有人可以向我指出。 字符串: 转换为: 请注意,带重音符号的字符缺失- 在 ê* 后面紧跟着 t ,在 é 后面紧跟着 m 。 * 我尝试使用StringEscapeUtils来成功转义某些字符,例如 ă 。我还构建了自己的转义功能,该功能产生相同的结果( ă 可以工作, ê 不会)

  • 关于字符集和替代字形 除键盘上可看到的字符之外,字体中还包括许多字符。根据字体的不同,这些字符可能包括连字、分数字、花饰字、装饰字、序数字、标题和文体替代字、上标和下标字符、变高数字和全高数字。字形是特殊形式的字符。例如,在某些字体中,大写字母 A 有几种形式可用,如花饰字或小型大写字母。 插入替代字形的方式有两种: 可以使用 “字形 ”面板来查看和插入任何字体中的字形。 可以使用 “OpenTy

  • 一些字符在 XML 中有特殊的含义,只能够通过其实体名称输入 字符 写法 缩写涵义 < &lt; less than > &gt; greater than & &amp; ampersand " &quot; quote ' &apos; apostrophe 空格 &nbsp; none-break space 通常需要使用实体输入的字符包括<、&、空格   XML 会将任意数量的空格解析为一

  • 使用Umbraco v6,检查搜索(不是完整的Lucene查询)。这是一个拉丁/南美洲网站。我问过我的同事,他们如何在搜索/URL中键入标题(字母上的重音符号),他们都说他们没有,他们只使用“常规”字符(a-Z,a-Z)。 我知道在传递到Examine时如何从字符串中去掉特殊字符,但我需要另一种方法,如Examine从属性中删除特殊字符以匹配查询。我有许多“节点”的名称中有标题(这是我正在搜索的属

  • 问题内容: 我想在Winforms中编写一个小型应用程序,在其中我可以写一些单词,然后使用ADO.net将它们写到SQL数据库中。 当我想用一个占位符写一个字符串时遇到麻烦: 我的数据库中记录的是: 我该如何克服通过传输到我的数据库的C#更改字符串? 这是我的代码的一部分: 问题答案: 您使用参数化的sql。