URI的编码字符串



如何为URI编码字符串,例如Capitan's Hat -> Capitan%27s+HatСhristmas Hat -> %D0%A1hristmas+Hat

我试过,几种方法encodeURIComponent(), encodeURI(),但没有带来足够接近我需要的。知道它是怎么被编码的吗?

Escape()对于队长帽的结果比较接近,但是对于圣诞帽的结果就完全不一样了。

编辑:

正如Thomas所说,encodeuriccomponent完成了这项工作,但是如何实现替换编码字符,回到字符?例如Сhristmas Hat -> "%D0%A1hristmas+Night"

我知道replace(),针对每个字符将工作,但是否有更普遍的选择?

const encode = str => new URLSearchParams([['', str]]).toString().slice(1)
const decode = str => new URLSearchParams('=' + str).get('')
console.log(encode('Сhristmas Hat'))
console.log(decode('%D0%A1hristmas+Hat'))

说明:URLSearchParams构造函数可以接受键/值对数组([['key', 'value']])或查询字符串('key=value')。在URLSearchParams实例上调用get将获取该键的未编码值;同时,调用toString给出url编码的键/值对的完整字符串。在本例中,我们使用空字符串''作为键,因为键并不重要。

URL编码查询参数的算法与encodeURIComponent相似,但也将空格替换为+

相关内容

  • 没有找到相关文章

最新更新