Sail


手在键盘敲很轻


深入编码

Preface

今天在微信看到这样一串代码


1.jpeg

1
\u53eb\u4f60\u7ffb\u8bd1\u4f60\u5c31\u7ffb\u8bd\uff0c\u4f60\u662f\u4e0d\u662f\u50bb\uff1f
1
\u6211\u662f\u4f60\u7238\u7238

这里涉及到了编码的知识,我初看之下,也不能确定是什么编码。经过一番搜索,整理出了本文。


编码

汉字转Unicode方法

1
2
3
4
5
6
7
8
9
10
function toUnicodeFun(data){
if(data == '' || typeof data == 'undefined') return '请输入汉字';
var str ='';
for(var i=0;i<data.length;i++){
str+="\\u"+data.charCodeAt(i).toString(16);
}
return str;
}

var resultUnicode = toUnicodeFun('中国'); // \u4e2d\u56fd

Unicode转化为汉字

1
2
3
4
5
6
7
8
9
10
11
function toChineseWords(data){
if(data == '' || typeof data == 'undefined') return '请输入十六进制unicode';
data = data.split("\\u");
var str ='';
for(var i=0;i<data.length;i++){
str+=String.fromCharCode(parseInt(data[i],16).toString(10));
}
return str;
}
var resultChineseWords = toChineseWords("\u4e2d\u56fd");
console.log(resultChineseWords);//中国
1
2
3
4
5
6
7
8
9
10
var GB2312UnicodeConverter={
ToUnicode:function(str){
return escape(str).toLocaleLowerCase().replace(/%u/gi,'\\u');
},
ToGB2312:function(str){
return unescape(str.replace(/\\u/gi,'%u'));
}
};
var result = GB2312UnicodeConverter.ToUnicode('中国'); //\u4e2d\u56fd
var result2 = GB2312UnicodeConverter.ToUnicode(result); //%5cu4e2d%5cu56fd

汉字转Unicode

1
2
3
4
5
function toUnicode(s){ 
return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(newStr){
return "\\u" + newStr.charCodeAt(0).toString(16);
});
}


参考链接

关注我的微信公众号[李一二],即时看更多的文章