JavaScript16进制unicode编码与字符转换

Daming 2019-05-19
0条评论 399 次浏览
Daming 2019-05-190条评论 399 次浏览

获取字符的Unicode编码:

charCodeAt()获取的是字符的10进制unicode码

使用charCodeAt()将指定字符转为10进制的unicode编码,然后 再用toString()转为对应的进制

"crazyming".charCodeAt(0).toString(2)//将crazyming 中 的 c 转为 2 进制:
"crazyming".charCodeAt(0).toString(8)//将crazyming 中 的 c 转为 8 进制:
"crazyming".charCodeAt(0).toString(10)//将crazyming 中 的 c 转为 8 进制:
"crazyming".charCodeAt(0).toString(16)//将crazyming 中 的 c 转为 16 进制:

Unicode 默认以十六进制4位表示一个编码,。\u前缀表示这个字符串是Unicode编码,是一个字符。

获取 “王” 的标准(16进制)Unicode编码:

"\\u"+"王".charCodeAt().toString(16)//      \u738b

获取 “c” 的标准(16进制)Unicode编码:

"\\u00"+"c".charCodeAt().toString(16)//      \\u0063  英文数字  类的 字符 需要在Unicode前面补00

这样,定义个转换字符为16进制Unicode的函数:

function strConvertToUnicode16(str) {
        if (str === undefined) throw "未传入字符";
        var temp = str.toString().charCodeAt(0).toString(16);
        return temp.length === 4 ? "\\u" + temp : "\\u00" + temp
    }
strConvertToUnicode16("c")//  \u0063
strConvertToUnicode16("王")//  \u738b

将16进制Unicode转为字符串:

我找到三种转换方法:

使用parseInt(推荐):

String.fromCharCode(parseInt("738b",16)) //王

使用eval:

  function unicode16ConvertToStr(u) {
        var res ="";
        if (u.length === 6 && u.indexOf('\\u') !== -1) eval(" res='" + u + "';");
        return res;
    }

unicode16ConvertToStr(strConvertToUnicode16("王"))//王

将\u 替换为 %u 然后使用unescape:

  function unicode16ConvertToStr(u) {
        return unescape(u.replace('\\u', "%u"));
    }
1+

发表评论

电子邮件地址不会被公开。