导航

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

侧边栏
最新评论
广树管理员
2025-12-14 19:22
@illlights:架不住突然从哪里蹦出来个怪和精神污染
illlights
2025-12-14 18:44
感觉寂静岭f已经算不太恐怖的那种了,后面基本上都是剧情、战斗 一切恐怖来源于火力不足🙃
广树管理员
2025-12-14 14:59
@大空魔术:校验不通过?有正确回答问题吗
大空魔术
2025-12-14 14:58
Q群加不进去😭显示校验不通过
ZeroCounter
2025-12-13 20:02
@广树:可能假期太多了😇
攻略中
SILENT HILL f
暂无评分
PS5SILENT HILL f
2025年12月13日 15时 ~ 攻略中
已累计游玩1天
主人公是居住在群山环绕的日本乡村小镇·戎之丘的高中生·深水雏子。 她的日常生活因为神秘白色“怪物”的出现突然崩塌。 她一边在面目全非的熟悉小镇中探索、战斗、解谜,一边迎来属于她的“结局”。
魔法少女的魔女审判
暂无评分
Steam魔法少女的魔女审判
2025年11月27日 22时 ~ 攻略中
已累计游玩2周3天
迎接少女们的,是一场残酷的死亡游戏……在即将来临的“魔女审判”中,打破魔法和谎言的幻影,揪出混入少女之中的“魔女”吧。这部最新的魔法辩论×悬疑ADV作品,由日本原创品牌“Acacia”为您呈献。
全民高尔夫环球之旅
暂无评分
Steam全民高尔夫环球之旅
2025年9月07日 12时 ~ 攻略中
已累计游玩3个月8天
《全民高尔夫 环球之旅》除了能体验到与过去作品相同的乐趣、爽快与深奥之外, 还有着以精美图像设计而成、个性丰富的角色们与以世界各地为主题的球场, 以及能让所有人热血沸腾的全新模式等等,是本系列的全新力作!
ToHeart
暂无评分
SteamToHeart
2025年6月26日 19时 ~ 攻略中
已累计游玩5个月21天
AQUAPLUS推出的“温暖人心的校园恋爱游戏”将以高清全3D形式焕新归来!
fault - StP - LIGHTKRAVTE
暂无评分
Steamfault - StP - LIGHTKRAVTE
2025年5月29日 20时 ~ 攻略中
已累计游玩6个月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