JS实现字符unicode编码信息查询

这两天在xiaonei的个人状态里看见很多人添加有一些特殊字符,如҉ (据说叫菊花,囧nz)。当然这种字符也还没什么稀奇,这个符号是cyrillic里百万的标识。另外有见到一个能将文字反排显示的不可见字符,比较有趣。如下:

 

此RLO字符的效果就是将文字反排(效果有点类似啊。参见:HTML的dir属性和标签及其他一些CSS文字排版属性、滤镜 不过bdo这个是需要浏览器解释后才能看见效果的,而此RLO不需要浏览器解释,当然上面代码里使用的是html字符实体编号,这个是需要浏览器解释的。)

在UCS(Unicode Character Set)当中,每个字符都有一个unicode编码——不过,拥有unicode码的不一定是字符,也可以是设备控制符。
应该说,很多形式的字符编码都是基于unicode编码的,如URL-encode,ASCll码,HTML Character Entities编号。特别是HTML Character Entities编号,与unicode可以说是一一对应的,只要浏览器支持,charset包含,“&#”+十进制标号+“;”的编码就能在html中使用所有unicode中定义字符。
以上面的RLO字符分析,虽然RLO符看不见,但也是可以被copy的,而且,必然的有一个对应的unicode码。RLO的unicode对应的16进制编号是:202e;10进制是:8238。要在html中使用这个字符,除了copy这个字符过来外,我们可以使用Character Entities References(HTML Entities):&#+8238+;(不包括+号),或Numeric Character Reference(NCR):&#+x202e+;。
关于如何查到某个字符的unicode编码,每种程序语言应该都有函数可以用来解码为unicode,这里有一个php的解码应用:convert-to-html。这是直接解成html实体编码的。它同unicode的关系只是十进制与十六进制的关系(实质是一样的)。要看16进制unicode只需做下进制转码就行了。知道了16进制编码,我们就可以在这里查询字符的信息:unicode.org

下面是js写的转码工具:


10进制Enticode:

 

可以解开任意字符的unicode码,并生成字符实体码,而且可以链接到unicode官网查询该字符的信息。
js中escape这个函数能直接将字符串转成unicode码,不过有部分属于ASCll编码的字符不会解开。
而charCodeAt函数则能解开任何字符的unicode码。

JS中解码的函数还有encodeURI——这个解开的unicode码我们会经常看见,地址栏里的字符串即出自于此。
另外在写了个简单的进制转换工具,支持10进制与16进制之间的互转,比较常用啊。

10进制