4

我正在编写 WinPhone 8.1 应用程序。代码非常简单,在大多数情况下都有效:

string htmlContent;
using (var client = new HttpClient())
{
    htmlContent = await client.GetStringAsync(GenerateUri());
}
_htmlDocument.LoadHtml(htmlContent);

但有时会抛出异常

htmlContent = await client.GetStringAsync(GenerateUri());

InnerException {System.ArgumentException: 'windows-1251' 不是受支持的编码名称。参数名称: System.Globalization.EncodingTable.internalGetCodePageFromName(String name)
at System.Net.Http.HttpContent.<>c__DisplayClass1.b__0(Task task)} System.Exception {System.ArgumentException}

HttpClient 是否支持 1251 编码?如果没有,我该如何避免这个问题?还是目标页面问题?还是我错了?

4

1 回答 1

9

获取响应IBuffer,然后使用 .NET 编码类进行转换:

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(uri);
IBuffer buffer = await response.Content.ReadAsBufferAsync();
byte[] bytes = buffer.ToArray();

Encoding encoding = Encoding.GetEncoding("windows-1251");
string responseString = encoding.GetString(bytes, 0, bytes.Length);
于 2015-07-26T17:54:43.250 回答