Http GET方法使用错误的编码返回文件的内容

问题描述

我有一个简单的GET请求,该请求返回.txt文件的内容。您可以使用浏览器或提琴手尝试一下:http://134.17.24.10:8054/Documents/13f37b0c-4b04-42e1-a86b-3658a67770da/1.txt 该文件的编码为cp-1251。当我尝试获得它时,我看到这样的东西: response text view

如何在C#中修改HttpRequest以获取所需编码的文本?或者只返回字节以手动转换它们。可以使用HttpClient吗?

另一个附件:

Request/Response data

Code snippet

解决方法

如果您不能更改服务器发送的字符集,可以,您仍然可以只请求字节,然后选择要应用的编码:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    
using (var httpClient = new HttpClient())
{   
    var response = await httpClient.GetByteArrayAsync(RequestUrl);
    var responseString = Encoding.GetEncoding("windows-1251").GetString(response,response.Length - 1);

    Console.WriteLine(responseString);
}

参考: How to change the encoding of the HttpClient response

Encoding.GetEncoding can't work in UWP app

.NET Framework类库提供一个静态属性CodePagesEncodingProvider.Instance,该属性返回一个EncodingProvider对象,该对象使桌面.NET Framework类库上的全部编码集对.NET Core应用程序可用。

https://docs.microsoft.com/en-us/dotnet/api/system.text.encodingprovider?redirectedfrom=MSDN&view=netcore-3.1

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...