最近一段时间,因为正在研究全文检索,所以遇到了很多问题。首先就是怎样对文章进行差别处理,这种差别在中文中尤其明显,例如:标点,数字、字母的全半角问题等。 我在网上查找了一些关于全半角转换的代码,但可惜只有C#(因为整个系统需要考虑移植的问题,所以计划用JAVA实现),不过,有总比没有好,仔细研究了一下算法,感觉用JAVA实现也很简单,所以就产生今天这篇文档,希望可以为今后的工作提供参考。 进入主题>> 1、首先,需要知道的是中文编码的种类,有:GB2312 、GBK、Unicode、UTF8、BIG5等。现在大多数的应用软件都采用Unicode编码,在JAVA的内部也是如此。所以关于上述问题,只需要对字符的Unicode编码进行一个相应的处理就可以解决。 2、下面说明一下Unicode编码,该编码采用双字节编码方式,对所有字符,都采用2个字节编码,即4byte,这点很重要,我们只需要对这4byte进行处理就可以完成相应字符的转换了。另外在Unicode编码中,标点、数字、字母的编码与汉字的编码在最高位会有明显区别。有兴趣可以参看Unicode 编码表 3、关于全角转半角的问题,在Unicode中,标点、数字、字母的半角编码最高位均为0,它们的全角编码与半角编码的第三位相差32h。 根据上面的结论,实现的全角转半角的JAVA代码如下,至于半角转全角,加变减就成了: public class change { 另外感觉C#与JAVA在字符处理方面的差别比较大,不知道是不是我的理解有问题,改天得好好看看。 至于其它编码,以后有时间再想吧,脑子有点疼了。。。 相关链接:: |
|