3

之所以对url进行编码是因为有些字符有特殊的含义。
当URI被作为参数进行传输或排版或受到文字处理程序的处理时,重要的空格可能会消失并且可能引入无关紧要的空格。
在查询字符串中,&符号(&)用作键值对之间的分隔符。 如果将&符号放入其中一个值中,它看起来就像值的结尾和下一个键的开头之间的分隔符。
因此对于像这样的特殊字符,我们使用百分比编码,以便我们可以确保数据是明确编码的。
注意:而中文需要进行两次编码https://segmentfault.com/q/10...

encodeURIComponent

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。专属url的特殊字符,这些字符指的是除数字字母以外的字符,例如: // / & # 。如果某个url作为参数传给服务器,这时,服务器是无法识别的。这个时候,可以用encodeURIComponent方法对这个url进行编码。

encodeURI

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

注意

如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。也就是说,encodeURI对全角日韩汉字起作用。对URL中的特殊字符不做处理,encodeURIComponent()对url中的特殊字符做出来,将他们转化成对应的ASCII码
在小程序中的H5通过wx.navigateTo等函数把url作为参数时,就需要把url进行编码
附图
图片描述
参考:
http://www.w3school.com.cn/js...
http://www.w3school.com.cn/js...
https://www.cnblogs.com/shuiy...


aishuishui2066
281 声望7 粉丝