起因:IE浏览器中直接传递中文报错,页面无法加载,于是尝试对中文字符串进行转义,发现对encodeURI和encodeURIComponent区别不是很理解,随查阅资料后整理分享。
如果这些组件必须包含 ; / ? : @ & = + $ , # 这些保留字符串,则应该使用encodeURIComponent()方法对每个组件进行单独编码。比如,一个用户可能会输入"Thyme &time=again"作为comment变量的一部分。如果不使用encodeURIComponent对此内容进行转义,服务器得到的将是comment=Thyme%20&time=again。请注意,"&"符号和"="符号产生了一个新的键值对,所以服务器得到两个键值对(一个键值对是comment=Thyme,另一个则是time=again),而不是一个键值对。
参考文档:
Javascript权威指南