下述超过FFFF范围的字符是console.info(\u{20BB7});由于优快云编辑器无法正常显示该字符,所以全写成吉
一、Unicode
注意:
1.超出FFFF范围:吉
2.解决超出不能正确识别的字符:{}
{
let str = '\u00ff';
console.info(str);//ÿ
}
{
let str = '\uD842\uDFB7';
console.info(str)//吉
}
{
let str = "\u20BB7"; //₻7
//\u20BB+"7" 超出FFFF范围 无法正确识别字符
console.log(str);//₻7
}
{
let str = "\u{20BB7}";
console.log(str);//吉
}
二、新增方法
1.codePointAt() =>可以识别32位的UTF-16字符(正确处理 4 个字节储存的字符,返回一个字符的码点)
{
var s = "吉";//2个字符 4个字节 此时用chartAt与charCodeAt都无法获取正确值
console.info(s.length);//2
console.info(s.charAt(0));//�
console.info(s.charAt(1));//�
console.info(s.charCodeAt(0).toString(16));//d842
console.info(s.charCodeAt(1).toString(16));//dfb7
console.log( s.codePointAt(0).toString(16));//20bb7
console.log( s.codePointAt(1).toString(16));//dfb7
}
{
let str = '吉a';
console.log(str.codePointAt(0).toString(16));//返回吉的十六进制码点 20bb7
console.log(str.codePointAt(1).toString(16));//与charCodeAt的第二值一样 dfb7
console.log(str.codePointAt(2).toString(16));//61
for(let s of str){// 20bb7 // 61
console.log(s.codePointAt(0).toString(16));//20bb7 61
}
}
场景:判断当前字符是否大于==》0xFFFF
{
//测试一个字符由两个字节还是由四个字节组成
function demo(str){
return str.codePointAt(0) > 0xFFFF;
}
console.log(demo("你"));//false
console.log(demo("吉"));//true
}
2.at() ==>修正了chartAt()不能解析大于0xFFFF
/*at可以识别 Unicode 编号大于0xFFFF的字符,返回正确的字符*/
{
console.log('abc'.at(0));//a
console.log('吉'.at(0) );//
}