Javascript decodeURI(组件)格式错误的uri异常

Javascript decodeURI(Component) malformed uri exception

本文关键字:错误 uri 异常 格式 decodeURI 组件 Javascript      更新时间:2023-09-26

我在Chrome的控制台中输入了以下内容:

decodeURIComponent('a%AFc');

它没有导致a0xAFc,而是导致了URIError异常(uri格式错误)。

我听过几个借口,为什么这可能是可能的,但我不明白的是为什么

decodeURIComponent()函数尤其应该对数据进行解码,而不是验证URI。

  • 维基百科:百分比编码
  • RFC3986:URI通用语法(2005)

%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 '%'