Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpClient抛出System.ArgumentException:';windows-1251';不是受支持的编码名称_C#_Character Encoding_Windows Phone 8.1_Httpclient_Windows 1251 - Fatal编程技术网

C# HttpClient抛出System.ArgumentException:';windows-1251';不是受支持的编码名称

C# HttpClient抛出System.ArgumentException:';windows-1251';不是受支持的编码名称,c#,character-encoding,windows-phone-8.1,httpclient,windows-1251,C#,Character Encoding,Windows Phone 8.1,Httpclient,Windows 1251,我正在编写WinPhone 8.1应用程序。 代码非常简单,在大多数情况下都有效: string htmlContent; using (var client = new HttpClient()) { htmlContent = await client.GetStringAsync(GenerateUri()); } _htmlDocument.LoadHtml(htmlContent); 但有时会抛出异常 htmlContent = await client.GetStringA

我正在编写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(字符串 姓名)在 System.Globalization.EncodingTable.GetCodePageFromName(字符串名称)
在 System.Net.Http.HttpContent.c__DisplayClass1.b__0(任务 任务)}System.Exception{System.ArgumentException}


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

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);

非常感谢,它很有效!唯一的区别是:
byte[]bytes=wait response.Content.ReadAsByteArrayAsync()
@HarrySmith或更简单的
var bytes=wait client.GetByteArrayAsync(uri)