1

我試圖從使用windows-1254字符集的網站解析html。但所有土耳其字符都是這樣顯示的:30Windows Phone 8 SDK WebClient編碼問題

實際問題在哪裏?我曾嘗試這些:

webClient.Encoding = System.Text.Encoding.UTF8 
webClient.Encoding = System.Text.Encoding.GetString("UTF-8"); 

的功能如下:

public string ReplaceText(string _text) 
     { 
      _text = _text.Replace("Ä°", "İ").Replace("ı", "ı").Replace("ü", "ü").Replace("ÅŸ", "ş").Replace("Å", "Ş").Replace("ç", "ç").Replace("ö", "ö").Replace("ÄŸ", "ğ").Replace("Ç", "Ç").Replace("Ö", "Ö").Replace("Ãœ", "Ü"); 
      return _text; 
     } 

也是這個標題:

webClient.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"; 
webClient.Headers["Accept-Charset"] = "windows-1254,utf-8;q=0.7,*;q=0.7"; 

(與ISO-8859-9,UTF8太)

和這是我如何使用網絡客戶端:

WebClient wb = new WebClient();   
      wb.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"; 
      wb.Headers["Accept-Charset"] = "windows-1254,utf-8;q=0.7,*;q=0.7"; 
      wb.DownloadStringAsync(new Uri("http://www.site.com")); 
      wb.Encoding = System.Text.Encoding.UTF8; 
      wb.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DSC); 

處理程序:

HtmlDocument htmlDoc = new HtmlDocument(); 

      htmlDoc.LoadHtml(e.Result); 

      var inputs = htmlDoc.DocumentNode.SelectNodes("//div[@id=\"mrln-eyhaber\"]//a"); 

      foreach (var input in inputs) 
      { 

       textarea.Text += this.ReplaceText(input.Attributes["title"].Value.ToString()) + "\n\n"; 
      } 

回答

1

而不是使用標準的方法,爲什麼不創建一個自定義的類,特定於您的需求,這將處理etconding。

This將幫助您生成類,像這樣:enter image description here

,然後將所有你必須做的

webClient.Encoding = CustomEncoding(); 

讓我知道如何去(:

+0

你能給我一些更多的信息,關於我如何使用它?我創建d新類,並添加了代碼'使用Hardcodet.Silverlight.Util;'然後我將如何使用它與webClient.Encoding? –

+1

哦,上帝對不起,我剛剛添加了'新的CustomEncoding();'現在它的工作!非常感謝你在這裏是你的國家:) –

0

爲什麼你的編碼設置爲UTF-8,如果你知道它的Windows的1254? 修復相當簡單,您只需在WebClient中設置正確的編碼即可。

wb.Encoding = Encoding.GetEncoding(1254); 

wb.Encoding = Encoding.GetEncoding("windows-1254"); 

而且,不應該不再需要或者您的ReplaceText方法。

編輯:當然,Windows Phone不支持那種編碼,你必須自己實現除utf-8或utf-16以外的任何編碼。幸運的是,有一個簡單的方法可以做到這一點,您只需使用描述爲here的程序來生成您自己的編碼類。

+0

當然我做到了這就是說:'System.ArgumentException:'windows-1254'不是一個受支持的編碼名稱.' –

+0

@Ali Demirci:啊,是的,我忘了,看我的編輯 – shriek