1. 程式人生 > >利用字元編碼集對中文長度的不同來判斷字串中有沒有中文

利用字元編碼集對中文長度的不同來判斷字串中有沒有中文

是這樣的,在日常開發中遇到一個問題:判斷一個字串中是否含有中文。本來是很簡單的一個需求,用正則就搞定了。然而這是一個很老舊的一個系統,有自己的一套開發語言。偏偏不支援正則,這就難住我了。

當時想到一個笨辦法:把三千個常用漢字寫在一個配置檔案中,把要判斷的字串分割為一個個字元,一個個的去配置檔案中找,看能不能找到,能找到就是含有中文,沒找到就是沒有。。。。幸虧我沒用這個方法,實在有點笨,有點丟人。

後來又看到一篇文章,是講中文在不同編碼下字符集長度不同的問題。這一下就給我啟發了,我把字串轉為不同的編碼,比較兩者的長度不就判斷有沒有中文了嗎。

當時用的兩個編碼, 一個是ANSI,一個是UTF-8.

這兒解釋一下ANSI,這是對ASCII編碼的擴充套件。這是一個編碼字符集,裡面就包括了中國地區用的GB2312,韓國用的Euc-kr。作業系統會根據地區的不同,選擇不同的ANSI編碼,中國地區就選擇GB2312。

在ANSI也就是GB2312編碼中,中文、英文到度是兩個位元組。而UTF-8中,英文的長度是兩個位元組,中文的長度是三個位元組。這中間的差值就是判斷是否有中文的字元的依據了。我們還能根據這個差值判斷有多少箇中文字元。

考慮到輸入的內容基本只會有中文、英文、符號等,不會出現韓文、日文這些文字,可以認為這個問題解決!