MailTo 链接中的重音字符损坏

发布于 2024-08-06 06:58:56 字数 542 浏览 6 评论 0原文

我正在尝试创建一个 mailto 链接,其中包含法语重音字符作为主题和电子邮件正文。 HTML 和 URI 编码字符都不起作用。这是我的代码:

<a href="mailto:%20?subject=ce%20titre%20est%20cass%C3%A9.&body=travaux%20deja!%20cesser%20d'%C3%AAtre%20t%C3%AAtu">SEND EMAIL</a>

没有 URI 编码时会出现相同的结果:

<a href="mailto:?subject=ce titre est cassé&body=travaux deja! cesser d'être têtu">SEND EMAIL</a>

无论我如何操作,新电子邮件都会以损坏的字符打开。 URI 编码的空格和换行符工作正常,但任何非 ANSI 的内容都会被破坏。我应该注意,我正在 MS Outlook 2007 的英语和法语版本中进行测试。有人知道如何让它工作吗?

I'm trying to create a mailto link that contains french accented characters as the subject and email body. Both HTML and URI encoding the chars does not work. Here is my code:

<a href="mailto:%20?subject=ce%20titre%20est%20cass%C3%A9.&body=travaux%20deja!%20cesser%20d'%C3%AAtre%20t%C3%AAtu">SEND EMAIL</a>

Same result occurs without URI encoding:

<a href="mailto:?subject=ce titre est cassé&body=travaux deja! cesser d'être têtu">SEND EMAIL</a>

No Matter how i do it, the new email opens up with the broken characters. URI encoded Spaces and line-breaks work fine, but anything that is not ANSI is broken. I should note that I am testing in both english and french versions of MS Outlook 2007. Anyone know how to get this to work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

德意的啸 2024-08-13 06:58:56

在 IE 8 中它是一个设置选项。
工具->选项->先进的。在“国际”下,选中“对 mailto 链接使用 UTF-8”选项。

在 Windows XP 下,此设置默认处于禁用状态。
在 Windows 7 下,它默认启用。

希望这有帮助

In IE 8 its an setting option.
Tools -> Options -> Advanced. Under International check the option "Use UTF-8 for mailto links".

Under Windows XP this setting is disabled by default.
Under Windows 7 its enabled by default.

Hope this helps

自此以后,行同陌路 2024-08-13 06:58:56

邮件标头中的所有内容(包括主题)都必须根据此 RFC 进行 MIME 编码,

http:// www.ietf.org/rfc/rfc2047.txt

执行此操作并不简单,但您可以找到大多数语言的代码来处理它。

正确编码的文本如下所示,

=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=

编辑:尝试此操作看看是否是您想要的,

<a href="mailto:[email protected]?subject=%3d%3fISO-8859-1%3fB%3fY2UgdGl0cmUgZXN0IGNhc3Pp%3f%3d&Content-Type=text%2fplain%3b+charset%3dISO-8859-1&body=travaux%20deja!%20cesser%20d'%C3%AAtre%20t%C3%AAtu">SEND EMAIL</a>

将电子邮件替换为您的地址。

Everything in mail header (including subject) must be MIME-encoded according to this RFC,

http://www.ietf.org/rfc/rfc2047.txt

It's not trivial to do this but you can find code to handle it in most languages.

The properly encoded text looks like this,

=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=

EDIT: Try this to see if it's what you want,

<a href="mailto:[email protected]?subject=%3d%3fISO-8859-1%3fB%3fY2UgdGl0cmUgZXN0IGNhc3Pp%3f%3d&Content-Type=text%2fplain%3b+charset%3dISO-8859-1&body=travaux%20deja!%20cesser%20d'%C3%AAtre%20t%C3%AAtu">SEND EMAIL</a>

Replace email with your address.

不一样的天空 2024-08-13 06:58:56

知道了!这可能是也可能不是 Microsoft Outlook/Entourage 中的错误。我将默认邮件阅读器更改为 Mail.app,它与 urlencoding 配合得很好。该(可能)错误似乎仅影响示例中的 2 个带重音的 e 字符之一。也许 Outlook/Entourage 未正确处理百万字节 UTF8 字符?

Got it! This may or may not be a bug in Microsoft Outlook/Entourage. I changed my default mail reader to Mail.app and it works beautifully with urlencoding. The (maybe) bug only appears to affect one of the 2 accented e characters in your example. Perhaps Outlook/Entourage is not handling miltibyte UTF8 chars correctly?

淡淡的优雅 2024-08-13 06:58:56

例如,使用 mootools(但可能是另一个框架,甚至是“原始”javascript),我通常会这样做,并且它可以在 mac/pc 上与主要浏览器/客户端一起使用:

window.addEvent('domready', function(){
    //get the links to encode
    var links_to_encode = $('#page ul li a');

    links_to_encode.each(function(link){
        //check if the link has an href
        var original_href = link.get('href');
        if(original_href){
            //substitute it with the encoded version
            link.set('href',encodeURI(original_href));
        }
    });
});//fine domready

再见!

For example, with mootools (but could be another framework or even 'raw' javascript), I usually do this, and it works mac/pc with the main browsers/clients:

window.addEvent('domready', function(){
    //get the links to encode
    var links_to_encode = $('#page ul li a');

    links_to_encode.each(function(link){
        //check if the link has an href
        var original_href = link.get('href');
        if(original_href){
            //substitute it with the encoded version
            link.set('href',encodeURI(original_href));
        }
    });
});//fine domready

Bye!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文