从 unicode 生成表情符号然后提取 unicode 给出不同的 unicode
Generating an emoji from unicode and then extracting unicode gives a different unicode
一和二是用不同的 uni-code 创建的。
但他们给出了相同的表情符号。
现在有趣的一点是 Unicode 与一个完全不同的值。
one = String.fromCodePoint(parseInt("1f436",16))
two = String.fromCodePoint(parseInt("d83d",16),parseInt("dc36",16))
one === two
one.length
one.codePointAt(0).toString(16) + '-' + one.codePointAt(1).toString(16)
代码点值的范围从 U+0000 到 U+10FFFF。
最初 JavaScript 有 Unicode escape sequences
正好由 4 个十六进制数字组成,表示一个代码点。 U+0000 到 U+FFFF 可以用这些表示。
例如:
>> 'I \u2661 JavaScript!'
'I ♡ JavaScript!'
在ES6中,JS引入了Unicode code point escapes
。
>> '\u{1F4A9}'
'' // U+1F4A9 PILE OF POO
大括号之间最多可以使用6个十六进制数字,足以表示所有的Unicode码位。
为了向后兼容 ECMAScript 5 和更旧的环境,不幸的解决方案是使用代理对:
>> '\uD83D\uDCA9'
'' // U+1F4A9 PILE OF POO
ECMAScript 6 引入了 String.prototype.codePointAt(position)
,它将尽可能处理代理项的一半和 returns 十六进制。
>> ''.codePointAt(0)
0x1F4A9
资料来源:https://mathiasbynens.be/notes/javascript-unicode
一和二是用不同的 uni-code 创建的。
但他们给出了相同的表情符号。
现在有趣的一点是 Unicode 与一个完全不同的值。
one = String.fromCodePoint(parseInt("1f436",16))
two = String.fromCodePoint(parseInt("d83d",16),parseInt("dc36",16))
one === two
one.length
one.codePointAt(0).toString(16) + '-' + one.codePointAt(1).toString(16)
代码点值的范围从 U+0000 到 U+10FFFF。
最初 JavaScript 有 Unicode escape sequences
正好由 4 个十六进制数字组成,表示一个代码点。 U+0000 到 U+FFFF 可以用这些表示。
例如:
>> 'I \u2661 JavaScript!'
'I ♡ JavaScript!'
在ES6中,JS引入了Unicode code point escapes
。
>> '\u{1F4A9}'
'' // U+1F4A9 PILE OF POO
大括号之间最多可以使用6个十六进制数字,足以表示所有的Unicode码位。
为了向后兼容 ECMAScript 5 和更旧的环境,不幸的解决方案是使用代理对:
>> '\uD83D\uDCA9'
'' // U+1F4A9 PILE OF POO
ECMAScript 6 引入了 String.prototype.codePointAt(position)
,它将尽可能处理代理项的一半和 returns 十六进制。
>> ''.codePointAt(0)
0x1F4A9
资料来源:https://mathiasbynens.be/notes/javascript-unicode