使用url编码转换特殊字符(éèë)

Jef*_*oel 2 javascript function urlencode

我正在开发一个功能,用户的电子邮件客户端只需打开预先填写的内容(javascript).

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

我写了一个函数,但在做了一个后console.log()我发现它甚至不会转换字符(可能是因为我试图char用a 代替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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Šim*_*das 6

这个可以吗?

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

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

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

例:

url_encode( 'ABCÀDEFè' ) // "ABC%C0DEF%E8"
Run Code Online (Sandbox Code Playgroud)