JavaScript16进制unicode编码与字符转换
获取字符的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"));
}
版权声明:
作者:东明兄
链接:https://blog.crazyming.com/note/1678/
来源:CrazyMing
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论