WP - 處理Big5資料來源

Windows Phone–處理Big5資料來源

前陣子在撰寫App使用到某政府的資料時,發現它依舊是用著台灣專用的big5編碼方式,

但是Windows Phone本身僅支援UTF-8,這下該怎麼辦才好,我也找了很多有關Big5 to Utf-8的轉換文章,

或是範例程式來試,但WP本身又是使用Silverlight framework,所以有些Win 32的framework根本無法使用。

 

另外,因為使用了HtmlAgilityPack,所以我一定要想辦法將內容轉成UTF-8才行,這二點原因加起來有點頭疼,

但經過我一些測試與方式的使用之後,我發現透過以下這個機制是可行的。

 

〉採用 WebBrowser 元件,連結至指定URL,取出HTML代碼,搭配HtmlAgilityPack進行資料的拆解

    使用方法如下:

(1) 宣告一個新的WebBrowser物件,先註冊LoadCompleted()的Event,再給定Source

   1: private WebBrowser gBrowser = null;
   2:  
   3: private void Init()
   4: {
   5:     gBrowser = new WebBrowser();
   6:     gBrowser.LoadCompleted += tBrowser_LoadCompleted;
   7:     
   8:     // 指定URL
   9:     gBrowser.Source = new Uri("");
  10: }

 

(2) 於LoadCompleted()事件,使用SaveToString()方法取得HTML內容,進行拆解

   1: void tBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
   2: {
   3:     string tHTML = gBrowser.SaveToString();
   4:     Dictionary<string, object> tBusStations = new Dictionary<string, object>();
   5:     HtmlDocument tHtmlDoc = new HtmlDocument();
   6:     tHtmlDoc.LoadHtml(tHTML);
   7:  
   8:     HtmlNodeCollection tAllNodes = tHtmlDoc.DocumentNode.SelectNodes(
   9:             "/html[1]/body[1]/table[1]/tbody[1]/tr"); 
  10: }

 

[備註]

如果遇到使用原始網址取得的內容還是big5的編碼,可再搭配「縮網址」的方式來調整。

 

======

很容易吧,不過使用WebBrowser時要小心Cache的問題,如果擔心內容會有Cache就不要用成全域變數喔。

簡單分享,當個筆記,謝謝大家。

 

References:

【系統】Linux : BIG-5 與 UTF-8 檔案轉換

BIG5 & UTF-8 編碼方式的分別?

[C#] string 編碼轉換,BIG5 to UTF8

C# - 字串轉碼

請教如何將 BIG5 字串轉成 UTF8 字串

http://blogs.microsoft.co.il/blogs/tomershamam/archive/2010/10/19/windows-phone-7-custom-message-box.aspx

 

Dotblogs Tags: