我在Chrome的控制台中输入了以下内容:
decodeURIComponent('a%AFc');
而不是a0xAFc
,它导致了一个URIError异常(格式错误的uri)。
我听过几个借口为什么可能这样做,但我不明白的是为什么?
特别是decodeURIComponent()
函数应该解码数据,而不是验证URI。
答案 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 '%'