El siguiente código:
var text = (new WebClient()).DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20"));
da como resultado una variable textque contiene, entre muchas otras cosas, la cadena
"$ κ $ -Minkowski espacio, campo escalar y el problema de la invariancia de Lorentz"
Sin embargo, cuando visito esa URL en Firefox, obtengo
$ κ $ -Espacio de Minkowski, campo escalar y el problema de la invariancia de Lorentz
que es realmente correcto. También lo intenté
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);
pero esto dio el mismo problema.
No estoy seguro de dónde está la culpa. ¿El feed miente acerca de estar codificado en UTF8 y el navegador es lo suficientemente inteligente como para darse cuenta de eso, pero no WebClient? ¿El feed está codificado correctamente en UTF8, pero WebClientfalla de alguna otra manera? ¿Qué puedo hacer para mitigar esto?

UTF8Encoding.Defaultes en realidadEncoding.Default, que es la codificación ANSI basada en la configuración de idioma del sistema operativo.Respuestas:
No es mentira. Primero debe configurar la codificación del cliente web antes de llamar a DownloadString.
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"); }En cuanto a por qué su alternativa no funciona, es porque el uso es incorrecto. Debe ser:
System.Text.Encoding.UTF8.GetString()fuente
WebClientno use los encabezados para detectar esto, pero esto funciona perfectamente, y entre usted y @svick, entiendo por qué la otra cosa que intenté también falló miserablemente.UploadStringasí