我们都知道urlencode编码一般用于url网址中,它的格式是带有%符号的十六进制编码,起着保护隐私的作用,例如这段url编码“%ce%d2%ca%c7%d6%d0%b9%fa%c8%cb(我是中国人)”,是gbk版本的,那么我们该如何来使用js解析这一段gbk2313的编码呢?代码如下:
//gbkStr是urlencode编码,作为参数传入 function gbkconvert(gbkStr, callback) { var script = document.createElement('script'); script.id = 'gbkconvert'; script.src = 'data:text/javascript;charset=gbk,gbkconvertCb("' + gbkStr + '");'; document.body.appendChild(script); window.gbkconvertCb = (res) => { callback && callback(res); }; } //使用解码函数,获得回调结果 gbkconvert('%ce%d2%ca%c7%d6%d0%b9%fa%c8%cb',(res) => { console.log(res); //输出我是中国人 })
代码分析:
本次js代码使用了一个callback回调函数,其实js本身没有urldecode这样的解码功能,这个函数的原理是定义script标签,添加到document对象中,来让浏览器识别gbk编码,然后打印出来。
提醒:
如果想要使用js来解析utf-8版的urlencode编码,则只需将上方函数中的“charset=gbk” 改成 “charset=utf-8” 即可。