用户:
蓝矮爱乐查看:7 回复:11 评论:7 创建时间:2022-06-17T07:27:43
通常情况下,转码会用到escape这个函数,解码的话就用unescape
JS总共有3种转码方法:
escape,解码unescape
encodeURI,解码decodeRUI
encodeURIComponent,解码decodeURIComponent
注:字母和一些英文符号是不会转码的!用decodeURI转码,再用unescape解码,会出现火星文!
那字母怎么转码?
总不能还用escape?()
上个帖子就用了字母转码

所以,字母转码究竟是怎么做到的呢?
那就看看代码怎么弄吧
小声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()就可以将字母转码了!
//上面的函数里面只要包含非英文字,非英文符号,特殊符号和表情符号,会报错
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
评论
天文台twtimgsrc="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
评论
function escape(s){
var l=s.split('');
var result='';
for(var x of l){
result+=`%u${x.charCodeAt().toString(16)}`
}
return result;
}点赞0
评论