最近一段時間,因為正在研究全文檢索,所以遇到了很多問題。首先就是怎樣對文章進行差別處理,這種差別在中文中尤其明顯,例如:標點,數(shù)字、字母的全半角問題等。 我在網(wǎng)上查找了一些關于全半角轉換的代碼,但可惜只有C#(因為整個系統(tǒng)需要考慮移植的問題,所以計劃用JAVA實現(xiàn)),不過,有總比沒有好,仔細研究了一下算法,感覺用JAVA實現(xiàn)也很簡單,所以就產(chǎn)生今天這篇文檔,希望可以為今后的工作提供參考。 進入主題>> 1、首先,需要知道的是中文編碼的種類,有:GB2312 、GBK、Unicode、UTF8、BIG5等?,F(xiàn)在大多數(shù)的應用軟件都采用Unicode編碼,在JAVA的內部也是如此。所以關于上述問題,只需要對字符的Unicode編碼進行一個相應的處理就可以解決。 2、下面說明一下Unicode編碼,該編碼采用雙字節(jié)編碼方式,對所有字符,都采用2個字節(jié)編碼,即4byte,這點很重要,我們只需要對這4byte進行處理就可以完成相應字符的轉換了。另外在Unicode編碼中,標點、數(shù)字、字母的編碼與漢字的編碼在最高位會有明顯區(qū)別。有興趣可以參看Unicode 編碼表 3、關于全角轉半角的問題,在Unicode中,標點、數(shù)字、字母的半角編碼最高位均為0,它們的全角編碼與半角編碼的第三位相差32h。 根據(jù)上面的結論,實現(xiàn)的全角轉半角的JAVA代碼如下,至于半角轉全角,加變減就成了: public class change { 另外感覺C#與JAVA在字符處理方面的差別比較大,不知道是不是我的理解有問題,改天得好好看看。 至于其它編碼,以后有時間再想吧,腦子有點疼了。。。 相關鏈接:: |
|