下述超過FFFF範圍的字符是console.info(\u{20BB7});由於CSDN編輯器無法正常顯示該字符,所以全寫成吉
一、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) );//
}