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

Chr*_*ian 35 javascript uri malformed decodeuricomponent

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

decodeURIComponent('a%AFc');
Run Code Online (Sandbox Code Playgroud)

a0xAFc它导致了一个URIError异常(格式错误的uri),而不是导致它.

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

decodeURIComponent()特别是该函数应该解码数据,而不是验证URI.

Jui*_*ter 41

%AF不是自己的角色,而是Unicode sequence(MACRON - %C2%AF)的一部分.

%AF不是由encodeURIComponent类似的东西产生的escape,所以它可以被解码unescape.

你可能需要的是什么 decodeURIComponent('%C2%AF')

  • 在我尝试解码一堆编码文本后,我做了它,失败并注意到它会阻塞该特定字符.或许`unescape`就是我所需要的. (3认同)
  • 那么如果我需要处理ASCII/iso-8859-1百分比编码输入呢?`unescape`已被弃用,也没有'unescapeURI` (3认同)

Nel*_*les 5

这可能适用于也可能不适用于其他人的情况,但这就是为我所做的,所以我想我会分享。我将大量文本文件上传和下载到自定义 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 '%'
Run Code Online (Sandbox Code Playgroud)

  • 不要将“%”编码为“~~pct~~”,而是将“%”编码为“%25”。然后解码端无需执行任何操作,decodeURI 会将“%25”转换为“%”。 (4认同)