javascript - 带感叹号的encodeUriComponent?

时间:2013-09-16 19:27:21

标签: javascript query-string special-characters urlencode encode

原生encodeURIComponent不支持编码感叹号 - !,我需要在url的查询参数编码中正确编码..

node.js querystring.stringify()也不是..

是使用自定义函数的唯一方法,例如 - https://github.com/kvz/phpjs/blob/master/functions/url/urlencode.js#L30

1 个答案:

答案 0 :(得分:7)

您可以重新定义本机功能以添加该功能。

以下是扩展encodeURIComponent以处理感叹号的示例。

// adds '!' to encodeURIComponent
~function () {
    var orig = window.encodeURIComponent;
    window.encodeURIComponent = function (str) {
        // calls the original function, and adds your
        // functionality to it
        return orig.call(window, str).replace(/!/g, '%21');
    };
}();

encodeURIComponent('!'); // %21

如果您希望代码更短,也可以添加新功能 不过,这取决于你。

// separate function to add '!' to encodeURIComponent
// shorter then re-defining, but you have to call a different function
function encodeURIfix(str) {
    return encodeURIComponent(str).replace(/!/g, '%21');
}

encodeURIfix('!'); // %21

更多这方面的例子可以在Mozilla's dev site

找到