如何实现encodeURIComponent输出小写编码同时保留URL中的大写区域代码
实现方案
核心逻辑是仅对编码生成的%XX格式转义序列做小写转换,其余普通字符完全保留原样,不需要额外识别地区编码规则,也不会影响URL中原有的大写内容。
具体实现步骤
- 第一步:对原始URL字符串调用标准的
encodeURIComponent方法,完成符合Blob存储要求的转义 - 第二步:用正则匹配所有
%[A-F0-9]{2}格式的转义片段,仅将匹配到的片段转为小写,其余字符保持不变
代码示例(JavaScript)
function customBlobUrlEncode(rawUrl) { const standardEncoded = encodeURIComponent(rawUrl); // 仅匹配转义序列做小写转换 return standardEncoded.replace(/%[A-F0-9]{2}/g, (matchItem) => matchItem.toLowerCase()); }
效果验证
- 普通URL测试
输入:products/household+products/
输出:products%2fhousehold%2bproducts%2f,完全符合Blob存储转义要求,转义序列均为小写 - 带地区编码URL测试
输入:products/GB/household+products
输出:products%2fGB%2fhousehold%2bproducts,地区编码GB保留大写,转义序列为小写,满足要求
内容的提问来源于stack exchange,提问作者marianopicco
相关产品推荐
相关产品推荐

