Tag: astral plane

如何在google v8(和nodejs)中呈现32位unicode字符

有没有人有一个想法,如何在谷歌V8,同时驱动谷歌浏览器和nodejs的JavaScript虚拟机,呈现unicode“星平面”字符(其CID超出0xffff)? 有趣的是,当我给谷歌浏览器(它标识为11.0.696.71,在Ubuntu 10.4上运行)这样的HTML页面: <script>document.write( "helo" ) document.write( "𡥂 ⿸𠂇子" ); </script> 它将正确地呈现“宽”字符𡥂与“窄”字符一起,但是当我在nodejs(使用console.log() )中尝试相当于我得到一个单一的 (0xfffd,replace字符)字符代替。 我也被告知,无论不可理解的原因,谷歌已决定使用16位宽的数据types来实现字符。 虽然我觉得这很愚蠢,但代理码点的devise恰恰是为了使'星际码点'通过16位挑战的通道'传送'。 不知何故,在chrome 11.0.696.71里面运行的v8似乎使用了这个unicode-foo或者其他的魔术来完成它的工作(我似乎记得几年前,我甚至在静态页面上总是得到盒子)。 是的, node –version报告v0.4.10 ,要弄清楚如何从中获得一个v8的版本号。 更新我做了咖啡脚本中的以下内容: a = String.fromCharCode( 0xd801 ) b = String.fromCharCode( 0xdc00 ) c = a + b console.log a console.log b console.log c console.log String.fromCharCode( 0xd835, 0xdc9c ) 但那只能给我 这背后的思想是,因为处理unicode的JavaScript规范的braindead部分似乎要求? /不彻底禁止? /允许? 使用代理对,那么也许我的源文件编码(utf-8)可能是问题的一部分。 毕竟,在utf-8中有两种编码32位编码点的方法:一种是写出第一个替代品需要的utf-8字节,然后是第二个替代品所需的utf-8字节。 […]