encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数 是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。
案例分析:
使用encodeURIComponent()
document.write(encodeURIComponent("http://www.sojson.com/encodeurl.html?我是个中文参数"))
结果:
http%3A%2F%2Fwww.sojson.com%2Fencodeurl.html%3F%E6%88%91%E6%98%AF%E4%B8%AA%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0
使用encodeURI()
document.write(encodeURI("http://www.sojson.com/encodeurl.html?我是个中文参数"))
结果:
http://www.sojson.com/encodeurl.html?%E6%88%91%E6%98%AF%E4%B8%AA%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0
总结:前者将协议,主机名、路径等信息当成是url的一部分,后者不会将以上信息在编码的时编辑。