Swift中创建URL时如何保留方括号不转义?
如何创建URL对象时保留方括号不编码
当使用new URL()构造函数时,方括号[和]会被自动编码为%5B和%5D,这是因为它们不属于URL路径段的标准允许字符(遵循RFC 3986规范)。如果需要强制保留方括号,可以通过以下两种方式实现:
方法1:创建URL后手动替换编码字符
先正常创建URL对象,再将路径中已编码的方括号替换回原字符:
let urlString = "https://example.com/[path]/file.txt"; const url = new URL(urlString); // 全局替换路径中的编码方括号 url.pathname = url.pathname.replace(/%5B/g, '[').replace(/%5D/g, ']'); console.log(url.href); // 输出:https://example.com/[path]/file.txt
方法2:手动构建URL的各部分
直接创建基础URL,再手动设置包含方括号的路径,避免构造函数自动编码:
const url = new URL("https://example.com/"); // 直接赋值带方括号的路径 url.pathname = "[path]/file.txt"; console.log(url.href); // 输出:https://example.com/[path]/file.txt
⚠️ 注意:这种做法不符合URL标准规范,部分服务器或客户端可能无法正确解析未编码的方括号。仅当你明确目标服务支持这种非标准格式时,才建议使用该方案。
内容的提问来源于stack exchange,提问作者instback
相关产品推荐
相关产品推荐

