WebClient.DownloadSsortingng génère des caractères endommagés en raison de problèmes d’encodage, mais le navigateur est OK

Le code suivant:

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

résulte en un text variable qui contient, entre autres choses, la chaîne

“$ κ $ – Espace minuscule, champ scalaire et problème de l’invariance de Lorentz”

Cependant, lorsque je visite cette URL dans Firefox, je reçois

L’espace $ κ $ -Minkowski, le champ scalaire et la question de l’invariance de Lorentz

ce qui est en fait correct. J’ai aussi essayé

 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.GetSsortingng(data); 

mais cela a donné le même problème.

Je ne suis pas sûr de savoir où est la faute ici. Le stream concerne-t-il le codage UTF8, et le navigateur est suffisamment intelligent pour le comprendre, mais pas WebClient ? Le stream est-il correctement codé en UTF8, mais WebClient échoue d’une autre manière? Que puis-je faire pour atténuer cela?

Ce n’est pas mentir. Vous devez d’abord définir le codage du webclient avant d’appeler DownloadSsortingng.

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

En ce qui concerne la raison pour laquelle votre alternative ne fonctionne pas, c’est parce que l’utilisation est incorrecte. Ce devrait être:

 System.Text.Encoding.UTF8.GetSsortingng()