我有以下示例代码:
const url = new URL("http://example.com");
url.searchParams.append("name", "Mustermann");
url.searchParams.append("question", "how does the URL.toString() function work?");
window.open(url.toString(), '_self');
我的问题是 URL 是否对不同的 searchParams 进行编码? 如果它对 URL 进行编码,它会使用什么函数? 是否使用了encodeURI() 函数或encodeURIComponent() 函数,或者是否有所不同。
URL 类在内部使用encodeURIComponent 对各个参数值进行编码,当使用 URL 类构建 URL 时,您无需担心它。
代码中 url.toString() 的输出将是:
http://example.com/?name=Mustermann&question=how%20does%20the%20URL.toString()%20function%20work%3F
以下是编码 URL 的详细信息:
参数值“Mustermann”中的空格被编码为%20。
参数值中的空格“URL.toString() 是如何实现的? function work?” 编码为 %20,特殊字符如 (, ), 和 ?也被编码。
URL 类负责为您正确编码参数,确保生成的 URL 有效并遵循标准 URL 编码规则。