我有unicode字符和JS的问题.我有一个书签,以帮助我键入奇怪的unicode字符.
我"".charCodeAt(pos)用来获取unicode代码来重现相同的奇怪字符,String.FromChardCode反之亦然.但是,对于具有unicode代码> 55349的字符,我遇到了一个问题:http:
//en.wikipedia.org/wiki/Blackboard_bold
例如,对于Blackboard bold X(120169):
如果我试图从代码中获取它:
alert(String.fromCharCode(120169));
Run Code Online (Sandbox Code Playgroud)
如果我尝试直接从JS获取代码,我会获得另一个角色,同样的事情:
s="";
alert(s.charCodeAt(0))
alert(s.charCodeAt(1))
Run Code Online (Sandbox Code Playgroud)
结果:55349 56655
有一种方法可以处理这些字符吗?
在内部,Javascript以16位编码存储字符串,类似于UCS2和UTF-16.(我说的很像,因为这两者都不是).事实上,它们是16位意味着BMP之外的字符,代码点高于65535,将被分成两个不同的字符.如果您分别存储两个不同的字符,并在以后重新组合它们,您应该没有问题地获得原始字符.
但是,认识到你有这样一个角色可能会相当棘手.
Mathias Bynens撰写了一篇关于此的博文:JavaScript的内部字符编码:UCS-2或UTF-16?.它非常有趣(虽然有时候有点神秘),最后提到了几个支持从UCS-2到UTF-16转换的代码库,反之亦然.您可以在那里找到您需要的东西.
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |