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

时间:2012-01-30 13:21:34

标签: javascript uri malformed decodeuricomponent

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

decodeURIComponent('a%AFc');

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

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

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

2 个答案:

答案 0 :(得分:39)

%AF不是他自己的角色,而是Unicode序列的一部分(MACRON - %C2%AF)。

%AF未生成{p> encodeURIComponent,但escape之类的内容已生成unescape,因此可以decodeURIComponent('%C2%AF')解码。

您可能需要的是{{1}}

答案 1 :(得分:0)

这可能会或可能不会适用于其他人的情况,但这正是我所做的,所以我想我会分享。我将大量文本文件上传并下载到自定义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 '%'