我正在制作一个功能,用户的电子邮件客户端只需打开预先填写的内容(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
和é
个字符(法语中使用了很多字符),结果为è
和é
答案 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"