Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript解码uri(组件)格式错误的uri异常_Javascript_Uri_Malformed_Decodeuricomponent - Fatal编程技术网

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

Javascript解码uri(组件)格式错误的uri异常,javascript,uri,malformed,decodeuricomponent,Javascript,Uri,Malformed,Decodeuricomponent,我在Chrome的控制台中输入了以下内容: decodeURIComponent('a%AFc'); 它没有导致a0xAFc,而是导致了一个URIError异常(格式错误的uri) 我听过一些借口为什么这可能发生,但我不明白的是为什么 尤其是decodeURIComponent()函数应该对数据进行解码,而不是验证URI %AF本身不是一个字符,而是Unicode序列()的一部分 %AF不是由encodeURIComponent生成的,而是类似于escape的东西,因此它可以由unesc

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

decodeURIComponent('a%AFc');
它没有导致
a0xAFc
,而是导致了一个URIError异常(格式错误的uri)

我听过一些借口为什么这可能发生,但我不明白的是为什么

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


    • %AF
      本身不是一个字符,而是Unicode序列()的一部分

      %AF
      不是由
      encodeURIComponent
      生成的,而是类似于
      escape
      的东西,因此它可以由
      unescape
      解码


      您可能需要的是解码组件(“%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 '%'
      
      //发送到服务器
      
      content=content.toString().替换(/%/g,~~pct~~);//~~pct~~我在尝试解码一堆编码文本后编出来的,失败了,并注意到它会阻塞特定字符。也许我需要的是
      unescape
      。@ChristianSciberras
      encodeURIComponent()
      通常是更好的选择,因为它与UTF-8一起工作。但是,
      0xAF
      本身不是有效的UTF-8编码字符序列。这就是你的代码不起作用的原因。我希望现在更清楚了。那么如果我需要处理ASCII/iso-8859-1%编码的输入呢
      unescape
      已被弃用,而且也没有
      unescapeURI
      像你这样的人应该在天堂有一个特别的位置。你解决了我的问题。谢谢