MailTo链接中的重音字符损坏

时间:2009-09-24 15:41:10

标签: html utf-8 mailto diacritics

我正在尝试创建一个包含法语重音字符作为主题和电子邮件正文的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的英文和法文版本。任何人都知道如何让它工作?

4 个答案:

答案 0 :(得分:3)

在IE 8中,它是一个设置选项。 工具 - &gt;选项 - &gt;高级。在国际下,选中“使用UTF-8进行mailto链接”选项。

在Windows XP下,默认情况下禁用此设置。 在Windows 7下,默认情况下启用。

希望这有帮助

答案 1 :(得分:2)

邮件标题中的所有内容(包括主题)必须根据此RFC

进行MIME编码

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

执行此操作并非易事,但您可以找到以大多数语言处理它的代码。

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

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

编辑:试试这个,看看它是不是你想要的,

<a href="mailto:your@email.com?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>

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

例如,使用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

再见!