JavaScript URL编码问题

encodeURI()

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

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

 

encodeURIComponent() 

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

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

 

提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,

前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

 

以上内容来自 W3School 

 

在提交html元素标记的时候,要使用encodeURIComponent()将html元素内容编码,以防提交后html标记被不正常转码

扩展参考:

http://www.ruanyifeng.com/blog/2010/02/url_encoding.html  阮一峰 关于URL编码

你可能感兴趣的:(JavaScript URL编码问题)