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

时间:2012-08-16 18:57:55

标签: javascript function urlencode

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

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

我编写了一个函数,但在执行了console.log()之后我发现它甚至不会转换字符(可能是因为我试图用{{1}替换char })。

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é个字符(法语中使用了很多字符),结果为èé

1 个答案:

答案 0 :(得分: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"