更詳細(xì)的參考 大神阮一峰的文章
這里只是記下自己的一些理解
1. js的字符狀況
js采用的是UCS-2編碼[當(dāng)然是unicode字符集],特點是一個字符只是兩個字節(jié),而不像UTF-16(2,4個字節(jié)都有)垄惧,但字符的規(guī)則跟UTF-16一致,如下:
基本平面的字符占用2個字節(jié)到逊,輔助平面的字符占用4個字節(jié)滤钱,即UTF-16的編碼長度要么是2個字節(jié)(U+0000到U+FFFF),要么是4個字節(jié)(U+010000到U+10FFFF)脑题。
其中基本字符中的 ** U+D800 到 U+DFFF ** 對應(yīng)空符,即不對應(yīng)任何基本字符叔遂,故這一段的編碼就用來映射輔助字符,其中** 高位用 U+D800到U+DBFF 已艰, 底位用 U+DC00 到 U+DF00 ** ,也就是字符串在識別字符串是會根據(jù)這個規(guī)則哩掺,是顯示基本字符,還是再讀取后兩位去顯示輔助字符嚼吞。
高地位的公式
H = Math.floor((c-0x10000) / 0x400)+0xD800
L = (c - 0x10000) % 0x400 + 0xDC00
示例請看 阮一峰的文章的 第八條
2. es6的改進(jìn)
更智能的支持的Unicode,比如遍歷字符串舱禽,可以使用
for(let s of string) {}
獲取length Array.from(strong).length
反斜杠+u+碼點
改為反斜杠+u+{+碼點+}
添加了幾個方法Array.fromCodePoint()
, Array.prototype.codePointAt
, Array.prototype.at
,正則式u
的支持炒刁,normalize
方法的支持