2011-02-01 134 views
3

我在C#中遇到了WebRequest問題。這是一個谷歌頁面。閱讀網站的編碼問題,三種不同的編碼

頭狀態

text/html; charset=ISO-8859-1 

網站狀態

<meta http-equiv=content-type content="text/html; charset=utf-8"> 

最後,我只能得到在調試器中預期的結果,以及正則表達式,當我使用Encoding.Default默認爲System.Text.SBCSCodePageEncoding

現在我該怎麼辦?你有任何提示,如何發生這種情況,或者我可以如何解決這個問題?

頁面的實際編碼似乎是UTF-8。至少FF在Windows中以UTF-8,而不是正確顯示它,而在拉丁文1中以而非正確顯示。

網址爲this

的問題是€-sign以及所有德國日爾曼

在此先感謝您對這個問題的幫助,這讓我非常瘋狂!

更新:當我通過輸出

// create a writer and open the file 
TextWriter tw = new StreamWriter("test.txt"); 

// write a line of text to the file 
tw.WriteLine(html); 

// close the stream 
tw.Close(); 

字符串它工作一切正常。

所以它似乎問題是,調試器不顯示正確的編碼和正則表達式也。

如何告訴C#將RegEx作爲UTF-8處理?

+0

你有沒有到使用上的相關編碼類`GetBytes會()`方法,您的字符串從一種編碼轉換爲另一種? – RobV 2011-02-01 13:09:28

回答

2

與其解析HTML,爲什麼不使用Google Query API

BTW,使用正則表達式,read this ;-)

編輯解析HTML之前:在回答您的評論:

  1. 的API適用於谷歌桌面 爲好。
  2. 此編碼問題是否特定於Google網頁?
  3. 除了現在的問題,誰知道稍後在生產中遇到什麼問題,由於這些頁面的HTML的細微更改,或者由Web服務器發回的標頭。 一個網頁應該是人類的眼睛友好,而不是電腦友好的。唯一可以預期的是友好的是頁面的外觀和呈現內容,而不是底層的HTML結構。 而不是API,這應該是計算機友好的
+0

1)這是爲谷歌桌面 2)我需要削減其他頁面以及 3)它工作得很好,除了編碼問題。 – Scoox 2011-02-01 11:45:45