2

我正在制作一个功能,用户的电子邮件客户端只打开一个预填充的内容(javascript)。

问题是我在转换特殊字符时遇到问题,因此它们可以正确显示到电子邮件客户端(通过 url 传递的内容)。

我写了一个函数,但是在做了 a 之后console.log()我发现它甚至不会转换字符(可能是因为我试图用 a 替换chara string)。

function url_encode(item)
{
    for (i in item)
    {
        a = item[i]
        switch (a)
        {
            case "À": a='%C0';
            break;
            case "È": a='%C8';
            break;
            case "É": a='%C9';
            break;
            case "Ê": a='%CA';
            break;
            case "à": a='%E0';
            break;
            case "è": a='%E8';
            break;
            case "é": a='%E9';
            break;
            case "ê": a='%EA';
            break;
            case "ë": a='%EB';
            break;  
        }
        item[i] = a;
        console.log(item[i])
    }
    return item;
}

任何人都找到了成功的方法或有一个想法(或修复)为什么这不能按预期工作?

编辑:encodeURI函数不支持éè字符(在法语中使用很多),结果为éand è

4

1 回答 1

6

这个可以吗?

var url_encode = function ( url ) {
    return url.split( '' ).map(function ( c ) {
        return /[ÀÈÉÊàèéêë]/.test( c ) ? '%' + c.charCodeAt( 0 ).toString( 16 ).toUpperCase() : c;
    }).join( '' );
};

现场演示:http: //jsfiddle.net/v2He6/

(注意:您需要为 IE8 进行polyfill .map()。)

例子:

url_encode( 'ABCÀDEFè' ) // "ABC%C0DEF%E8"
于 2012-08-16T19:39:45.123 回答