用encodeURIComponent编码括号下划线倾斜星

时间:2014-06-26 09:41:37

标签: javascript encodeuricomponent

encodeURIComponent会转义除以下字符以外的所有字符:- _ . ! ~ * ' ( )

但是也可以扩展功能编码上面的特殊字符。

我知道我可以这样做:

encodeURIComponent(str).replace(/\(/g, "%28").replace(/\)/g, "%29");

但是我想要这样的功能,而不使用encodeURIComponent上的附加功能

encodeURIComponent(str);

2 个答案:

答案 0 :(得分:5)

  1. 您应该创建自己的功能。
  2. 你应该创建自己的功能。
  3. 如果您真的知道自己在做什么,请转到第1步。
  4. 不要说我没有警告你;这里有龙:

    (function() {
        var _fn = encodeURIComponent;
    
        window.encodeURIComponent = function(str) {
            return _fn(str).replace(/\(/g, "%28").replace(/\)/g, "%29");
        };
    }());
    

答案 1 :(得分:0)

您可以编写自定义编码功能

customEncodeURI(str : string){
var iChars = ':",_{}/\\'; // provide all the set of chars that you want
var encodedStr = ''
 for (var i = 0; i < str.length; i++) {
    if (iChars.indexOf(str.charAt(i)) != -1) {
        var hex = (str.charCodeAt(i)).toString(16);
        encodedStr += '%' + hex;
    }else {
        encodedStr += str[i];
    }
  }
  console.log("Final encoded string is "+encodedStr);
  console.log("Final decoded string is "+decodeURIComponent(encodedStr));
  return encodedStr;
}