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 檔案轉換
‧[C#] string 編碼轉換,BIG5 to UTF8
Dotblogs Tags: Windows Phone