绝地无双
从MDN上encodeURIComponent:encodeURIComponent会转义除以下字符外的所有字符:字母,十进制数字, '-', '_', '.', '!', '~', '*', ''', '(', ')'从Go的url.QueryEscape(具体来说是shouldEscape私有函数)的实现中,转义除以下字符外的所有字符:字母,十进制数字,'-', '_', '.', '~'。与Javascript不同,Go的QueryEscape()将转义'!', '*', ''', '(', ')'。基本上,Go的版本严格符合RFC-3986。Javascript较宽松。再次来自MDN:如果希望严格遵守RFC 3986(保留!,',(,)和*),即使这些字符没有正式的URI分隔用法,也可以安全地使用以下字符:function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
}