Poniższy kod:
var text = (new WebClient()).DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20"));
daje w wyniku zmienną, text
która zawiera między innymi ciąg
„$ κ $ -Przestrzeń Minkowskiego, pole skalarne i kwestia niezmienności Lorentza”
Jednak kiedy odwiedzam ten adres URL w przeglądarce Firefox, otrzymuję
$ κ $ -Przestrzeń Minkowskiego, pole skalarne i kwestia niezmienniczości Lorentza
co jest rzeczywiście poprawne. Ja też próbowałem
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);
ale to spowodowało ten sam problem.
Nie jestem pewien, gdzie leży tu wina. Czy kanał kłamie, że jest zakodowany w UTF8, a przeglądarka jest wystarczająco inteligentna, aby to zrozumieć, ale nie WebClient
? Czy kanał jest poprawnie zakodowany w UTF8, ale WebClient
zawodzi w inny sposób? Co mogę zrobić, aby to złagodzić?
UTF8Encoding.Default
w rzeczywistościEncoding.Default
jest to kodowanie ANSI oparte na ustawieniach języka systemu operacyjnego.