2009年8月25日 星期二

使用VB讀取Unicode字元


嗚~好久都沒寫了,這次先來點清淡一點的布丁吧XD

這次處理客語統計的資料的時候,發現到不像國文的統計一樣,系統對該文全部的unicode有辦法以System.Char來讀取,而是客語使用System.Char來讀取則會發生嚴重的錯誤。原因是有許多無法顯示的字,而這些字並非對應到標準的字元區間(就是落在字定字元內),而在這一區段的字元System.Char會以標準字元去做讀取,也就是那些看不見的字,會被拆成許多個小區段來作處理。所以最終導致我在整理資料時會出錯。

這次解決方法所使用的類別為StringInfo以及TextElementEnumerator,都是在System.Globalization下的類別,使用方法很簡單

Dim tee As TextElementEnumerator = StringInfo.GetTextElementEnumerator(data)
Dim s As String
While tee.MoveNext
 s = tee.Current
 ...
End While

上述data是要讀取的unicode字串,該字串的每個unicode字元則是s。因為TextElementEnumerator並不是實作IEnumerable,而是實作IEnumerator,所以不能用for each來存取,要用上述的方式來讀取字串中每一個unicode字元。不過是IEnumerator要實作成IEnumerable也不會太難,只不過有沒有那個必要就看個人吧~
下次要寫處理unicode的程式就這樣小心的用吧^^