近日,碰到要抓取网页中的音标,但在VB中取得网页源代码后发现音标部分始终无法正常显示,一直是乱码。通过近2天的努力,终于找到了一种切实可行的方案。
我们都知道,计算机中字符(ASCII字符、中文、希腊字母等)的表示均可转换为二进制,而每个字符它在计算机中的二进制值又是固定的,也就是说,每个字符也可以用它的十进制值来代替,而网页中的转义字符正是基于这点的。
转义字符串(Escape Sequence),即字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。
这里的实体编号其实就是字符的二进制值,每个字符所表示的这个值是唯一的,用它我们就可以表示出任何想要展现的字符。
现在问题就出来了,怎么知道字符的这个二进制值呢?其实在语言设计者们早就为我们准备了这样的函数,如在VB中有asc和ascw,当不是asc字符时,用ascw函数可返回字符串或字符的二进制值,至此,我们就基本完成了乱码的处理,剩下的就是显示的问题,在这里,音标若无法正常显示,可为其加上标签<font face="Lucida Sans Unicode">,如此一来,问题解决。