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

标签 javascript function urlencode

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

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

我写了一个函数,但是在执行 console.log() 之后我发现它甚至不会转换字符(可能是因为我试图替换一个 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 函数不支持 éè 字符(在法语中经常使用),结果为 éè

最佳答案

这样可以吗?

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"

关于javascript - 使用url编码转换特殊字符(é è ë),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993689/

相关文章:

javascript - 当一个组件的状态发生变化时,如何防止整个列表重新呈现?

javascript - 如何在 Restify 7.x 中使用自定义错误选项创建自定义错误?

oracle - 在 PLSQL 中使用嵌套函数的正确方法是什么?

javascript - 在 jquery 中定义和调用函数

url - 在 golang http.NewRequest 中包含 %2F

java - servlet 请求参数值包含& 符号?

javascript - 用逗号分割字符串,但忽略引号内的逗号

javascript - 似乎无法绕过此错误 - "element not interactable"

qt - Qt4 中的 URL 编码

javascript - Coderbyte 上的字母计数 I JavaScript 挑战