处理四字节字符串

2017-03-27  本文已影响0人  轮回_1174

字符的Unicode表示法

JavaScript内部,字符以UTF-16的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode码点大于0xFFFF的字符),必须用两个双字节的形式表示。

'\uD842\uDFB7'//𠮷

ES6可以在一个括号内直接用大于0xFFFF表示

'\u{20bb7}'//𠮷

对于Unicode码点大于0xFFFF的字符

一个字符的length长度是2

'𠮷'//'\uD842\uDFB7'
'𠮷'.length//2
'𠮷'[0]//'\uD842'
'𠮷'[1]//'\uDFB7'

返回字符码点

'𠮷'.codePointAt(0).toString(16)//"20bb7"
//遗憾的是
'𠮷'.codePointAt(1).toString(16)//'DFB7'

如字符串中包含Unicode码点大于0xFFFF的字符,使用String.prototype[Symbol.iterator]可以正确返回每个字符

for(let i of '𠮷a'){
console.log(i);
}
//𠮷 
//a
[... '𠮷a']//['𠮷','a']
//失败
var s='𠮷a';
for(let i=0;i<=s.length;i++){
console.log(s[i])
}
//�
//�
//a
上一篇 下一篇

猜你喜欢

热点阅读