猫史档案馆


【JS教程】转码

用户:蓝矮爱乐蓝矮爱乐查看:7 回复:11 评论:7 创建时间:2022-06-17T07:27:43


通常情况下,转码会用到escape这个函数,解码的话就用unescape

JS总共有3种转码方法:

escape,解码unescape

encodeURI,解码decodeRUI

encodeURIComponent,解码decodeURIComponent

注:字母和一些英文符号是不会转码的!用decodeURI转码,再用unescape解码,会出现火星文!

 

那字母怎么转码?

总不能还用escape?()

上个帖子就用了字母转码

center_image

 

所以,字母转码究竟是怎么做到的呢?

那就看看代码怎么弄吧

小声BB:偷偷借鉴我以前使用的寻找关键词代码

const $letter_and_number$ = ['0','1','2','3','4','5','6','7','8','9','a','b',
    'c','d','e','f','g','h','i','j','k','l',
    'm','n','o','p','q','r','s','t','u','v','w','x','y','z'
];
globalThis.add=function add(record){
    var t = [];
    for(let e=0;e<record.length;e++){
        t.push($letter_and_number$.indexOf(record[e]));
    };
    var c=t.length-1;while(true){
        t[c]+=1;
        if(t[c]==$letter_and_number$.length){
            t[c]=0;c--;
            continue
        }else{
            var d='';
            for(const r of t){
                if(d==''){
                    d=$letter_and_number$[r]
                }else{
                    d=String(d)+String($letter_and_number$[r])
                }
            };
            return d
        }
    }
};
var e=escape;
globalThis.letterEscape=(()=>{
    var _E=(v)=>{
        var e='\\x',er='00';
        for(var x=0;x<=$letter_and_number$.length**2;x++){
            try{
                if(eval(`"${e}${er}"`)==v){
                    return `${e}${er}`;
                }
                er=add(er);
            }catch{
                er=add(er)
            }
        }
        throw new RangeError('not letter')
    };
    var escape=(p)=>{
        var l=Array.from(p);
        for(var g in l){
            l[g]=_E(l[g]);
        };var str='';
        for(var g of l)str+=g;
        return str;
    }
    return(value)=>escape(value)
})()

这样,用letterEscape()就可以将字母转码了!


回复

上一页1 页 / 共 1下一页
尖端放电尖端放电

沙发!

点赞0


评论


尖端放电尖端放电

好难啊...

点赞0


评论


yee剑走天下yee剑走天下

喵()

点赞0


评论


蓝矮爱乐蓝矮爱乐

//上面的函数里面只要包含非英文字,非英文符号,特殊符号和表情符号,会报错
globalThis._escape=function _escape(value){
    var result=new String();
    for(const e of Array.from(value)){
        try{
            result+=letterEscape(e)
        }catch{
            result+=escape(e).replaceAll('%','\\')
        }
    }
    return result
}
//这样,就可以用_escape共同把英文字符和非英文字符共同转码了

点赞0


评论


天文台twt天文台twt

嗯嗯,阿哲,手说说:“嗯我会了。”脑子说:“真的吗????”————————————

点赞0


评论


天文台twt天文台twt

imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E6%BA%9C%E4%BA%86%E6%BA%9C%E4%BA%86.gif"alt="emotion_编程猫_溜了溜了"

点赞0


评论


蓝矮爱乐蓝矮爱乐

看看自己以前的帖子吧,字母转码直接

`\\x${'字母'.charCodeAt().toString(16)}`

不就行了吗还弄那么多)()

点赞0


评论


你好2050你好2050

我突然想起来有个人说什么javescape这种自创语言

点赞0


评论


yee剑走天下yee剑走天下

ddd!)

点赞0


评论


yee剑走天下yee剑走天下

那个

`\\x${'字母'.charCodeAt().toString(16)}`

这个好像只能转码字母()能不能出一个转码英文字符串啊(

 

点赞0


评论


蓝矮爱乐蓝矮爱乐

function escape(s){
    var l=s.split('');
    var result='';
    for(var x of l){
        result+=`%u${x.charCodeAt().toString(16)}`
    }
    return result;
}

点赞0


评论