最近在做PC端的项目,途中遇到了一个问题,就是关于url中传递参数时参数被转换的问题。
问题如下:
参数从前一个页面传递过来的格式:URL?id=3534&catName=今日头条
但是需要用到参数时拿到的 catName 就变成了 %E4%BB%8A%E6%97%A5%E5%A4%B4%E6%9D%A1 这种 URL 编码形式表示的 ASCII 字符(十六进制格式);
有兴趣的可以去了解一下这篇文章。关于URL编码
解决方案
1.使用 decodeURI(URIString)
2.使用 decodeURIComponent(URIString)
经过查阅资料发现 js 对文字进行编码涉及以下几个JavaScript顶层函数:
1.escape(URIstring) 对应解码方法 unescape(URIstring)
可对字符串进行编码,ECMAScript 不推荐使用,推荐使用 decodeURI(URIstring) 和 decodeURIComponent(URIstring) 替代它;
2.encodeURI(URIstring) 对应解码方法 decodeURI(URIstring)
encodeURI(URIstring) 函数可把字符串作为 URI 进行编码,方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的&