繁体   English   中英

西里尔符号显示为问号。 内容类型:文本/xml;字符集=windows-1251;

[英]Cyrillic symbols show as question marks. Content-Type:text/xml;charset=windows-1251;

我知道这是一个很受欢迎的问题,但我仍然没有找到任何解决方案。

所以我得到 xml 文件作为 api 的响应,但西里尔文符号表示为问号。

在此处输入图像描述

我尝试使用Encoding class 转换源字节数组。

using (var httpClient = new HttpClient())
{
   var response = await httpClient.GetAsync(uriBuilder.Uri);
   var responseBytes = await response.Content.ReadAsByteArrayAsync();
   var responseText = Encoding.UTF7.GetString(responseBytes);
   var utf8 = Encoding.UTF8.GetString(responseBytes);
   var unicode = Encoding.Unicode.GetString(responseBytes);
   var ascii = Encoding.ASCII.GetString(responseBytes);
   var defaultt = Encoding.Default.GetString(responseBytes);
}

但仍然没有运气。

字符集响应:

Content-Type: text/xml;charset=windows-1251;

有人可以提出任何解决方案吗?

更新:答案是我在下面的评论

如此处所述,您可以使用Encoding.GetEncoding(1251).GetString(responseBytes); 获得所需的编码。

请记住,操作系统需要支持代码页。

所以解决方案是:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var encoding = Encoding.GetEncoding("windows-1251");
var result = encoding.GetString(responseBytes);

windows-10-终端编码

查看当前代码页:

chcp

将代码页更改为 Unicode/1251:

chcp 1251

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM