原生encodeURIComponent
不支持编码感叹号 - !
,我需要在url的查询参数编码中正确编码..
node.js querystring.stringify()
也不是..
是使用自定义函数的唯一方法,例如 - https://github.com/kvz/phpjs/blob/master/functions/url/urlencode.js#L30?
答案 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
找到