JS 处理URI编码

encodeURI 和encodeURIComponent

首先 URI(Uniform Resource Identifiers)通用资源标识符。

有效的 URI 中不能包含某些字符,例如空格,这两个URI编码方法就可以读URI进行编码,用特殊的UTF-8编码替换所有无效的字符

js处理URI编码主要有两个方法encodeURI和encodeURIComponent

encodeURI主要用于整个URI 

const uri = "https://i.cnblogs.com/EditP osts.aspx?opt=1"
alert(uri)
//https://i.cnblogs.com/EditP%20osts.aspx?opt=1


encodeURIComponent()主要用于对 URI 中的某一段(例如前面 URI 中的 EditP osts.aspx?opt=1)进行编码。

const uri = "https://i.cnblogs.com/EditP osts.aspx?opt=1"
alert(uri)
//https%3A%2F%2Fi.cnblogs.com%2FEditP%20osts.aspx%3Fopt%3D1

使用 encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了 %20。而 encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符。这也正是可以 对整个 URI 使用 encodeURI(),而只能对附加在现有 URI 后面的字符串使用 encodeURIComponent()的原因所在。


encodeURI和encodeURIComponent的区别
encodeURI大多数用来整个URI链接的转码,因为encodeURI不会对URI本身的特殊字符进项转码,例如\\ : 等
encodeURIcomponent则会对任何非标准字符进行编码

一般来说我们用encodeURICompent的时候更多,因为我们大多数是对查询字符串参数而不是对基础的URI进行编码。

与encodeURI和encodeURIComponent方法赌赢的两个解码方法decodeURI和decodeURIComponent。encodeURI只能和decodeURI对应,他可以把%20替换成空格,但是不能把%23替换成#号
同理都是相互对应的 ,试一下便知道。





猜你喜欢

转载自www.cnblogs.com/mawn/p/9480537.html