我在 Chrome 的控制台中输入了以下内容:
decodeURIComponent('a%AFc');
它没有导致 to a0xAFc
,而是导致了 URIError 异常(格式错误的 uri)。
我听过几个借口为什么这可能是可能的,但我不明白为什么?
特别是该decodeURIComponent()
功能应该解码数据,而不是验证 URI。
我在 Chrome 的控制台中输入了以下内容:
decodeURIComponent('a%AFc');
它没有导致 to a0xAFc
,而是导致了 URIError 异常(格式错误的 uri)。
我听过几个借口为什么这可能是可能的,但我不明白为什么?
特别是该decodeURIComponent()
功能应该解码数据,而不是验证 URI。
%AF
不是他自己的字符,而是 Unicode 序列 ( MACRON - %C2%AF
) 的一部分。
%AF
不是由 产生的,encodeURIComponent
而是类似的东西escape
,所以它可以被解码unescape
。
你可能需要的是decodeURIComponent('%C2%AF')
这可能适用于也可能不适用于其他人的情况,但这就是为我所做的,所以我想我会分享。我将大量文本文件上传和下载到自定义 CMS。源代码中
的 “%”符号对我造成了严重破坏。
// send to server
content = content.toString().replace(/%/g,'~~pct~~'); // ~~pct~~ <-made up replacement
content = encodeURI(content);
// get back from server / database
content = decodeURI(content);
content = content.toString().replace(/~~pct~~/g,'%'); // globally restore '%'