Javascript解码uri(组件)格式错误的uri异常
我在Chrome的控制台中输入了以下内容: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
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
。@ChristianSciberrasencodeURIComponent()
通常是更好的选择,因为它与UTF-8一起工作。但是,0xAF
本身不是有效的UTF-8编码字符序列。这就是你的代码不起作用的原因。我希望现在更清楚了。那么如果我需要处理ASCII/iso-8859-1%编码的输入呢unescape
已被弃用,而且也没有unescapeURI
像你这样的人应该在天堂有一个特别的位置。你解决了我的问题。谢谢