2015-10-29 41 views
0

所以我試圖讀取包含捷克字符(ř,š,š,ň等)的頁面的HTML源代碼。該頁的字符集是windows-1250Content-type = text/html; charset=windows-1250)。Windows.Web.Http.HttpClient字符編碼

var hc = new Windows.Web.Http.HttpClient(); 
    var uri = new Windows.Foundation.Uri("http://rozvrhuni.hys.cz/150909.html"); 
    hc.defaultRequestHeaders.acceptLanguage.parseAdd("cs"); 
    hc.defaultRequestHeaders.acceptEncoding.parseAdd("windows-1250"); 
    hc.getStringAsync(uri).done(
     function complete(result) { 
      htmlText = result; 
     }, 
     function error(result) { 
      (new Windows.UI.Popups.MessageDialog("Non-existent content", "Error")).showAsync().done(); 
      return; 
     } 
    ); 

我的代碼獲取源代碼,但繼續錯讀一些字符(R = O,C = E等)

我該怎麼做才能正確讀取頁面?

回答

0

我對JavaScript並不熟悉,但我相信C#的概念是一樣的。

以下代碼在C#中,但我希望它可以幫助你。

string retVal = ""; 
byte[] bodybytes = {0}; 

// This 'RegisterProvider' call is enough at once per process. 
var provider = System.Text.CodePagesEncodingProvider.Instance; 
System.Text.Encoding.RegisterProvider(provider); 

var enc = Encoding.GetEncoding("windows-1250"); 
... 
bodybytes = await response.Content.ReadAsByteArrayAsync(); 
... 
retVal = enc.GetString(bodybytes, 0, bodybytes.Length); 

注 - 您可能需要將以下nuget包添加到您的項目中。 https://www.nuget.org/packages/System.Text.Encoding.CodePages/