Der folgende Code:
var text = (new WebClient()).DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20"));
führt zu einer Variablen text
, die unter anderem die Zeichenfolge enthält
"$ κ $ -Minkowski-Raum, Skalarfeld und das Problem der Lorentz-Invarianz"
Wenn ich jedoch diese URL in Firefox besuche, erhalte ich
$ κ $ -Minkowski-Raum, Skalarfeld und das Problem der Lorentz-Invarianz
das ist eigentlich richtig. Ich habe es auch versucht
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);
aber das gab das gleiche Problem.
Ich bin mir nicht sicher, wo der Fehler hier liegt. Liegt der Feed daran, UTF8-codiert zu sein, und der Browser ist intelligent genug, um das herauszufinden, aber nicht WebClient
? Ist der Feed ordnungsgemäß UTF8-codiert, schlägt aber WebClient
auf andere Weise fehl ? Was kann ich tun, um dies zu mildern?
UTF8Encoding.Default
ist eigentlichEncoding.Default
die ANSI-Codierung, die auf den Spracheinstellungen des Betriebssystems basiert.Antworten:
Es lügt nicht. Sie sollten zuerst die Codierung des Webclients festlegen, bevor Sie DownloadString aufrufen.
Warum Ihre Alternative nicht funktioniert, liegt daran, dass die Verwendung falsch ist. Es sollte sein:
quelle
WebClient
die Header nicht verwendet, um dies zu erkennen, aber das funktioniert perfekt, und zwischen Ihnen und @svick verstehe ich, warum das andere, was ich versucht habe, auch kläglich fehlgeschlagen ist.UploadString
und