以下代码:

var text = (new WebClient()).DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20"));

产生变量text,其中包含字符串

$i:$-Minkowski空间、标量场和洛仑兹不变性问题

然而,当我在Firefox中访问该URL时,我会

$κ$-Minkowski空间、标量场和洛伦兹不变性问题

这实际上是正确的.我也试过了

var data = (new WebClient()).DownloadData("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20");
var text = System.Text.UTF8Encoding.Default.GetString(data);

但这也带来了同样的问题.

我不确定这里的错在哪里.这个提要是不是在撒谎,说它是UTF8编码的,而浏览器足够聪明,可以理解这一点,但不是WebClient?feed是否正确编码为UTF8,但WebClient是否以其他方式失败?我能做些什么来缓解这种情况?

推荐答案

这不是撒谎.在调用DownloadString之前,应该先设置webclient的编码.

using(WebClient webClient = new WebClient())
{
webClient.Encoding = Encoding.UTF8;
string s = webClient.DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20");
}

至于为什么你的 Select 不起作用,那是因为用法不正确.它应该是:

System.Text.Encoding.UTF8.GetString()

.net相关问答推荐

获取Ef-Core集合的DeleteBehavior

Ubuntu 22.04 + JetBrains Rider 不能做脚手架 dbContext

如果只有一个 : 存在于字符串中,则提取冒号后的内容

如何使用 C# 关键字作为属性名称?

整个命名空间的SuppressMessage

使用 Windows 服务和 C# 检测 USB 驱动器插入和移除

为什么要判断这个!= null?

SubscribeOn 和 ObserveOn 有什么区别

C# 中 try/finally 的开销?

如何更改 double.ToString() 中小数点的符号?

如何在 C# 中仅设置 DateTime 变量的时间部分

如何比较 C# 中的(目录)路径?

没有 @Html.Button !

使用语句与最终try

是否可以在 XP 上运行 .NET 4.5 应用程序?

内存分配:堆栈与堆?

接口属性的 XML 序列化

了解 C# 中的协变和逆变接口

从 bcp 客户端接收到 colid 6 的无效列长度

如何使用 AutoMapper .ForMember?