如何使用JavaScript编码URL

例如,如果要将其作为GET请求的一部分发送,则可能需要对URL进行编码。

如何在JavaScript中编码URL?

根据您需要执行的操作,有2个JavaScript函数可以为您提供帮助。

首先是encodeURI(),第二个是encodeURIComponent()

注意:您可能会读到escape(),但已弃用,不应使用。

这两种方法在编码字符方面有所不同。

详细来说,encodeURI()不编码[email protected]#{{content}}amp;*()=:/,;?+encodeURIComponent()不编码-_.!~*'(),对所有其他字符进行编码。他们为什么不同?因为它们的用途不同:

  • encodeURI()用于编码完整的URL
  • encodeURIComponent()旨在对单个URL参数值进行编码

如果您要打电话encodeURIComponent()在完整的网址上,因为它确实进行了编码/,URL路径分隔符也将被编码(除其他外):

encodeURI("http://flaviocopes.com/ hey!/")
//"http://flaviocopes.com/%20hey!/"
encodeURIComponent("http://www.example.org/a file with spaces.html")
// "http%3A%2F%2Fflaviocopes.com%2F%20hey!%2F"

MDN提出一项改进措施以遵守RFC 3986 standard (http://tools.ietf.org/html/rfc3986),通过实现以下功能:

const fixedEncodeURIComponent = (str) => {
  return encodeURIComponent(str).replace(/[!'()*]/g, (c) => {
    return '%' + c.charCodeAt(0).toString(16)
  })
}

您可以为要添加到URL的每个参数调用它。

encodeURI()encodeURIComponent()方法有一个对应的decodeURI()decodeURIComponent()如果您使用的是相反的工作,则可以在后端使用Node.js

免费下载我的JavaScript初学者手册


更多js教程: