导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
热门文章
1博文
时隔两年的《冒险岛Online》线下聚会——Super Maple Party 2025
热度
1173
2页面
程序员老黄历&求签
热度
390
3推文
《Happy Sugar Life》的作者签名复制原画到啦!
热度
356
4推文
让AI生成了一张 Happy Sugar Life 的手办图。 效果出乎意料的好,太尊啦!
热度
226
5页面
足迹
热度
130
6页面
游戏
热度
117
7页面
友链
热度
104
8推文
由于韩国Nexon的一系列迷惑操作,导致全球的R区玩家买单。 在2024年12月11日的日服更新中,日服R区开始了第一轮普区化改造。 一夜间,软棉棉的资产被清0,所有装备被上了锁,所有值钱的道具被清空,5转核心和碎片被清除。 相对应的,开放了交易和拍卖功能,以及间接的日元换游戏币的功能。 另外,第一轮普区化还没有删除R区的伤害buff技能,以及6转的升级材料也还保留。
热度
91
9页面
追番
热度
91
10推文
将博客端的Nuxt版本从3升级到了4。 按照官方的升级教程走非常顺利的就升到了4。唯一的问题就是会报弃用警告,不知道是Nuxt UI导致的还是本体导致。跑了跑,发现没什么问题就上到维基萌上了。 中途想把Nuxt UI也从2升级4。但是一直没成功,按照官方教程走,结果Tailwindcss虽然安装了但是一直没生效,就退回到2的最新版了。 但是2的最新版也有点问题,就是编译时间加倍,这个问题4也有。如果继续用老版本的UI吧,提示不兼容当前Nuxt,进退两难。
热度
90
最新评论
Zrzzz
2025-11-14 19:57
@广树:我定语缺失了 大佬严谨
广树管理员
2025-11-14 08:22
@Spike:是这样的,不过最大的意义还是可以前进后退时保持浏览图片的状态。
广树管理员
2025-11-14 08:21
@Zrzzz:是我推的结婚照,圆满了
Spike
2025-11-13 23:38
em...我觉得要克制地使用,一旦触发,如果读者网络比较慢,可能就得在那等好一阵子,体验不太好。(虽然他也可以自己关闭啦)
Zrzzz
2025-11-13 23:25
家里挂着结婚照,某种意义上圆满了
攻略中
全民高尔夫环球之旅
暂无评分
Steam全民高尔夫环球之旅
2025年9月07日 12时 ~ 攻略中
已累计游玩2个月8天
《全民高尔夫 环球之旅》除了能体验到与过去作品相同的乐趣、爽快与深奥之外, 还有着以精美图像设计而成、个性丰富的角色们与以世界各地为主题的球场, 以及能让所有人热血沸腾的全新模式等等,是本系列的全新力作!
ToHeart
暂无评分
SteamToHeart
2025年6月26日 19时 ~ 攻略中
已累计游玩4个月21天
AQUAPLUS推出的“温暖人心的校园恋爱游戏”将以高清全3D形式焕新归来!
fault - StP - LIGHTKRAVTE
暂无评分
Steamfault - StP - LIGHTKRAVTE
2025年5月29日 20时 ~ 攻略中
已累计游玩5个月19天
全球累计销量超过50万份的“fault”系列最新作!故事的舞台是一个融合了奇幻与科幻的超前世界——卢森海德王国。本作讲述了生活在此地的一个平凡又平庸的究极普通市民——名为果子的少年的故事。
PSN奖杯卡

PSN奖杯卡

归档
赞助商广告

PHP urlencode()生成的编码所对应的JS解码

作者:广树时间:2018-04-15 20:24:39分类:PHP

因为要在地址栏里传中文参数,但是地址栏传中文参数是很危险的一件事情,我就用urlencode()转了下。

但是本以为JS的 encodeURI()能解码,但是很可惜不行,于是我找到了可以给PHP urlencode()生成的编码所对应的JS解码。

function urldecode(encodedString){
    var output = encodedString;
    var binVal, thisString;
    var myregexp = /(%[^%]{2})/;
    function utf8to16(str)
    {
        var out, i, len, c;
        var char2, char3;
 
        out = "";
        len = str.length;
        i = 0;
        while(i < len) 
        {
            c = str.charCodeAt(i++);
            switch(c >> 4)
            { 
                case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
                out += str.charAt(i-1);
                break;
                case 12: case 13:
                char2 = str.charCodeAt(i++);
                out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
                break;
                case 14:
                char2 = str.charCodeAt(i++);
                char3 = str.charCodeAt(i++);
                out += String.fromCharCode(((c & 0x0F) << 12) |
                        ((char2 & 0x3F) << 6) |
                        ((char3 & 0x3F) << 0));
                break;
            }
        }
        return out;
    }
    while((match = myregexp.exec(output)) != null
                && match.length > 1
                && match[1] != '')
    {
        binVal = parseInt(match[1].substr(1),16);
        thisString = String.fromCharCode(binVal);
        output = output.replace(match[1], thisString);
    }
     
    //output = utf8to16(output);
    output = output.replace(/\\+/g, " ");
    output = utf8to16(output);
    return output;
}

donate.png


telegram banner (1).png


1210 x 50(蓝底).png

cloudcone