如何decode url,(被多次encode)
金鱼我在这 2014-08-12 06:06:45 在javascript中,如何判断一个被多次encode 的url 已经被decode到原来的格式?
问题1: 使用decodeURIComponent. 可以循环多次使用这个方法,直到字符不再变化吗? 有需要注意的特别字符吗? 我发现
“+” 要用“%20”替换(可以每调用一次这个方法检查替换一次。)
“%”这个比较头疼: 如下 这个rul
http%253A%252F%252Fpixel.everesttech.net%252F2813%252Fcq%253Fev_sid%253D3%2526ev_ln%253D{keyword}%2526ev_crx%253D{creative}%2526ev_mt%253D{matchtype}%2526ev_n%253D{network}%2526ev_ltx%2526ev_pl%253D{placement}%2526url%253Dhttp%25253A%252F%252Fnyacuradealers.com%252FNew-York%252FDealer%252FNew%252FAcura%252FRDX%252F&mkwid={ifsearch:s}{ifcontent:c}Kx4fp674_d{device}&pkw={keyword}&pmt={MatchType}&utm_source=Tier10&utm_medium=ppc&utm_campaign=Toyota%20Comp.%20Conquest-%2021%25
解压一次之后
http%3A%2F%2Fpixel.everesttech.net%2F2813%2Fcq%3Fev_sid%3D3%26ev_ln%3D{keyword}%26ev_crx%3D{creative}%26ev_mt%3D{matchtype}%26ev_n%3D{network}%26ev_ltx%26ev_pl%3D{placement}%26url%3Dhttp%253A%2F%2Fnyacuradealers.com%2FNew-York%2FDealer%2FNew%2FAcura%2FRDX%2F&mkwid={ifsearch:s}{ifcontent:c}Kx4fp674_d{device}&pkw={keyword}&pmt={MatchType}&utm_source=Tier10&utm_medium=ppc&utm_campaign=Toyota Comp. Conquest- 21%
然后继续解压会出现异常: 最后的&utm_campaign=Toyota Comp. Conquest- 21% 已经被解码好了,但是 前面的部分还没有解码好。继续使用decodeURIComponent, %会导致问题。
如果 “%”替换成“%25”, 问题在于无法定位,也不知道该在地几次使用decodeURIComponent之后替换(这样才能保证前后两部分的加密次数是同步的,最终被正确的解码出来)